Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 传递viewstate/事件验证令牌;引起问题的特殊字符_C#_Asp.net_.net_.net 4.0 - Fatal编程技术网

C# 传递viewstate/事件验证令牌;引起问题的特殊字符

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中有一个

我有一个viewstate和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编码。