C# 传递viewstate/事件验证令牌;引起问题的特殊字符
我有一个viewstate和eventvalidation令牌,我正试图将其与我的应用程序一起传递 我遇到的问题是,我正在将此信息传入:C# 传递viewstate/事件验证令牌;引起问题的特殊字符,c#,asp.net,.net,.net-4.0,C#,Asp.net,.net,.net 4.0,我有一个viewstate和eventvalidation令牌,我正试图将其与我的应用程序一起传递 我遇到的问题是,我正在将此信息传入: string.Format("__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE={0}&__EVENTVALIDATION={1}&{2}", viewstate, eventvalidation, request) eventvalidation中有一个
string.Format("__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE={0}&__EVENTVALIDATION={1}&{2}", viewstate, eventvalidation, request)
eventvalidation中有一个加号(+),它会导致字符串的cat,而不是显示文本字符。有什么办法可以防止这种情况发生吗
以下是我执行请求的代码:
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;
使用String.Concat()
使用String.Concat()
尝试使用
HTMLEncode
将+。你要把这个放在隐藏的地方吗
String.Format("__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE={0}&__EVENTVALIDATION={1}&{2}", Server.HtmlEncode(viewstate), Server.HtmlEncode(eventvalidation), Server.HtmlEncode(request)))
尝试使用
HTMLEncode
拿走+。你要把这个放在隐藏的地方吗
String.Format("__EVENTTARGET=&__EVENTARGUMENT=&__LASTFOCUS=&__VIEWSTATE={0}&__EVENTVALIDATION={1}&{2}", Server.HtmlEncode(viewstate), Server.HtmlEncode(eventvalidation), Server.HtmlEncode(request)))
HttpUtility.UrlEncode
将正确编码指定内容类型的值。有关更多详细信息,请参阅 HttpUtility.UrlEncode
将正确编码指定内容类型的值。有关更多详细信息,请参阅 我使用了Uri.EscapeDataString,这就成功了 我使用了Uri.EscapeDataString,这就成功了 仍然遇到同一个问题,EVENTVALIDATION是:blahblahblahblahblah+blahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblahblah,直到遇到同一个问题,事件验证是:blahblahblahblahblah+blahblahblahblahblahblahblahblahblahblahblahblahblahblahdoong HTML编码也没有解决这个问题。事件验证应为:/wEWCgLovI7yCgLWx/zfCALd4faqDQLLnOKMCQKU84j8BQL36/xrcl36/hrcwllchkvhbqkej7dkbglbnobwcxuhlgmcsf3z9f+V882ftSalMi3s,但它是作为:/wEWCgLovI7yCgLWx/zfcald4faqldqllnokmcqku84j8bql36/xrcl36/hrcwllchkvhbqkej7dkbghbgxbqlbgxwknobxugmcsf3z9f V882ftSalMi3s进行的(请注意空格和加号),即使使用HTML编码,进行HTML编码也不能解决问题。事件验证应为:/wEWCgLovI7yCgLWx/zfCALd4faqDQLLnOKMCQKU84j8BQL36/xrcl36/hrcwllchkvhbqkej7dkbglbnobwcxuhlgmcsf3z9f+V882ftSalMi3s,但它是作为:/wEWCgLovI7yCgLWx/zfcald4faqldqllnokmcqku84j8bql36/xrcl36/hrcwllchkvhbqkej7dkbghbgxbqlbgxwknobxugmcsf3z9f V882ftSalMi3s进行的(请注意空格和加号),即使使用HTML编码。