2011-06-28 6 views
6

このresponse.redirectの後に生成されるURL文字列が頭痛を引き起こしています。文字をURLエンコード文字で置き換え、余分なファイルディレクトリを追加しています。stop Response.encodingからのリダイレクト

Response.Redirect("TestingReport.aspx?id=" + Request.QueryString("id") + "&Test_Type_ID=" + Request.QueryString("Test_Type_ID") + "&TType=" + Request.QueryString("TType")) 

https://subdomain.domain.com/User%20Portal/Testing/%2fUser%2520Portal%2fTesting%2fTestingReport.aspx%3fid%3d8444%26Test_Type_ID%3d2%26TType%3dCore%20Mandatory%202

なぜそれが変化していますか?と=パーセントコードに?私はUser Portal/Testingを2度追加している理由を理解していません。

ありがとうございます。

答えて

2

URLEncodingと呼ばれています。あなたが持っている文字列をデコードするには、this online utilityをチェックアウトしてください。 .NETでは、System.Web.HttpUtilityを使用してエンコード/デコードできます。

0

URLに空白がないことを確認してください。

0

URL全体がURLにコード化されます。これはおそらく、文字列に入れた値をURLエンコードしていないためです。 URLが正しく値をエンコードし、それが動作するはずです:

Response.Redirect(
    "TestingReport.aspx?id=" + Server.UrlEncode(Request.QueryString("id")) + 
    "&Test_Type_ID=" + Server.UrlEncode(Request.QueryString("Test_Type_ID")) + 
    "&TType=" + Server.UrlEncode(Request.QueryString("TType")) 
) 
0

は、Redirectメソッドラインとは別に、あなたのクエリ文字列を構築する場合があります、URLエンコードこれらの値と、その後HTMLはResponse.Redirectをするために渡されたURLをエンコード

サンプルはMSDNのWebサイトから表示されます。私は、あなたの連結演算が何らかの理由で、値だけではなく、フレームワーク全体がURLエンコードする原因になっていると考えています。

<% 

薄暗い適量

qs = Server.URLEncode(Request.Querystring) 

Response.Redirect "newpage.asp?" + Server.HTMLEncode(qs) 
%> 

http://msdn.microsoft.com/en-us/library/ms524309.aspx

+0

いいえ、クエリ文字列全体をURLエンコードしないでください。値だけを指定するか、またはセパレータをエンコードします。また、クエリ文字列をHTMLでエンコードしてはいけません。これはURLをHTMLコードの属性に入れて、属性の値全体をクエリ文字列だけでなくHTMLでエンコードするときに使用されます。 – Guffa

0

this postをチェックしてください。基本的に.NetはあなたのためにURLを消毒しようとしています。解決方法は、手動でエンコードすることです。

関連する問題