2016-10-18 17 views
0

私が抱えている問題はFormatExceptionエラーです。タイプ: 'System.FormatException'の例外がmscorlib.dllで発生しましたが、ユーザーコードで処理されませんでした 追加情報:Guidは4桁のダッシュ(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)を含む32桁の数字を含む必要があります。だから帰りのURLがコメントアウトされているときにはGuidが動作していますが、何らかの理由でそれを組み込むと、Guidはすべてゼロになります。 は、ここでこれは私が、私はフォーマットの例外を取得コードに追加するときに問題が生じていますラインでコードプロファイルページからのログイン時に返信URLを取得しようとしています

 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"); 
     } 

です。 "/ user_d;" これは私の2回目のようなもので、ここで質問をすると、コードを間違って書いたか、何か感謝してくれますか?

編集問題を修正しましたログインページで他の連結を行っていて、userIdを2回追加していました。みんな助けてくれてありがとう。

+0

エラーメッセージは何が間違っているのかを示しています: 'userId' GUIDの形式が間違っています。 – Steve

+0

その理由は、フォーマットが正しいために奇妙なエラーです。私はストアドプロシージャを使用してデータベースを検索するのに同じGuidを使用します。これはユーザープロファイルであり、同じuserIdによってコメントとその投稿を読み込みます。アンカーhrefをコードに追加すると、すべてゼロになります。 – Chase

答えて

1

有効な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; 
+0

これも試しましたが、ローカルサーバーから404エラーが発生しました。また、私は別のaspxページでこの – Chase

+0

とまったく同じ返信URLを持っています。 anchor.HRef = "/Account/Login.aspx?returnURL=/ExpandedPost.aspx?postId=" + postId; < - ラインで、それは完璧に動作しますか?の代わりに &。申し訳ありませんが、この2つの別々の返信を行うことを意味しませんでした。 – Chase

+0

404はページが見つからないことを意味します。ほとんどの場合、指定されたURLは有効なページを指していません。 –

0

guidには不要な文字が含まれている可能性があります。 guidをbase64で変換してからクエリ文字列を追加し、使用するときにbase64からstringに変換する場合。

あなたは変換のためのコードの下に使用することができます: -

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); 
} 
+0

クエリはクエリーストリングに安全に追加できます。それはどこでも行われています。エンコードする必要はありません。 –

関連する問題