试图从配置文件页面登录时获得返回URL
本文关键字:返回 URL 登录 配置文件 | 更新日期: 2023-09-27 18:13:33
我遇到的问题是FormatException错误类型的异常:'System。在mscorlib.dll中发生了FormatException,但未在用户代码中处理附加信息:Guid长度为32位,4连字符(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。因此,当返回URL被注释掉时,Guid是正确的,但当我由于某种原因包括它时,Guid是全零。下面是代码
if (Request.QueryString["userId"] != null)
{
MasterPage masterpage = Page.Master;
HtmlAnchor anchor = (HtmlAnchor)masterpage.FindControl("ancLogin");
Guid userId = new Guid(Request.QueryString["userId"]);
User user = new User();
user = user.GetById(userId);
lblUserName.Text = user.UserName;
imgProfile.ImageUrl = "~/" + user.ProfilePic;
PostList posts = new PostList();
posts = posts.GetByUserId(userId);
CommentsList comments = new CommentsList();
comments = comments.GetByUserId(userId);
rptPost.DataSource = posts.List;
rptPost.DataBind();
rptComments.DataSource = comments.List;
rptComments.DataBind();
anchor.HRef = "/Account/Login.aspx?returnURL=/Account/Profile.aspx?userId=" + userId;
if (Session["User"] != null)
{
if (((User)Session["User"]).Id == userId)
{
btnChangePicture.Enabled = true;
fuChangeProfileImage.Enabled = true;
fuChangeProfileImage.Visible = true;
btnChangePicture.Visible = true;
}
}
}
else
{
Response.Redirect("Default.aspx");
}
这是我在添加到代码时遇到麻烦的行,我得到格式异常。锚。HRef = "/Account/Login.aspx " ?returnURL=/Account/Profile.aspx?userId=" + userId;此外,这是我第二次在这里问问题,让我知道如果我格式化的代码错误或任何东西,谢谢!
我修复了这个问题,我在登录页面上有一些其他的连接,它是添加userId两次。谢谢大家的帮助。一个有效的URL必须是这样的格式:
baseURL?query1=value1&query2=value2&query3=value3
在你的情况下,替换
anchor.HRef = "/Account/Login.aspx?returnURL=/Account/Profile.aspx?userId=" + userId;
:
anchor.HRef = "/Account/Login.aspx?returnURL=/Account/Profile.aspx&userId=" + userId;
可能您的指南包含一些不需要的字符。在添加查询字符串之前转换base64中的guid,当您想要使用时从base64转换回字符串
可以使用下面的代码进行转换:-
public static string Base64Encode(string plainText) {
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
}
public static string Base64Decode(string base64EncodedData) {
var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
}