0

アプリで渡そうとしているビューステートとイベント検証トークンがあります。

私が遭遇している問題は、私がこの情報を次の場所に渡していることです。

string.Format("__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE={0}&__EVENTVALIDATION={1}&{2}", viewstate, eventvalidation, request)

eventvalidationにはプラス記号(+)があり、リテラル文字を表示する代わりに、文字列の猫を引き起こしています。これを防ぐ方法はありますか?

リクエストを行うための私のコードは次のとおりです。

WebRequest req = WebRequest.Create(url);
//Here Request is working properly; the EVENTVALIDATION token has the + sign in it.
byte[] send = Encoding.Default.GetBytes(request);
// I think after I convert it to byte[], it is doing something bad to the EVENTVALIDATION token.
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = send.Length;

Stream sout = req.GetRequestStream();
sout.Write(send, 0, send.Length);
sout.Flush();
sout.Close();

WebResponse res = req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string returnvalue = sr.ReadToEnd();

return returnvalue;
4

4 に答える 4

2

Uri.EscapeDataStringを使用しましたが、これでうまくいきました。

于 2012-10-25T17:13:51.163 に答える
1

使用するString.Concat()

String.Concat("__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE=", 
           viewstate,"&__EVENTVALIDATION=", eventvalidation,"&", request);  
于 2012-10-25T15:51:43.973 に答える
0

HttpUtility.UrlEncode指定したコンテンツ タイプの値を正しくエンコードします。詳細については、この回答を参照してください。

于 2012-10-25T17:08:11.353 に答える
0

HTMLEncode+ を取り除くためにan を使用してみてください。これを HiddenField に配置していますか?

String.Format("__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE={0}&__EVENTVALIDATION={1}&{2}", Server.HtmlEncode(viewstate), Server.HtmlEncode(eventvalidation), Server.HtmlEncode(request)))

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

于 2012-10-25T16:01:15.783 に答える