试图从配置文件页面登录时获得返回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

一个有效的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);
}