Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# https服务器的HttpWebRequest在fiddler中工作,但不在Visual Studio中工作_C#_Post_Httpwebrequest_Fiddler - Fatal编程技术网

C# https服务器的HttpWebRequest在fiddler中工作,但不在Visual Studio中工作

C# https服务器的HttpWebRequest在fiddler中工作,但不在Visual Studio中工作,c#,post,httpwebrequest,fiddler,C#,Post,Httpwebrequest,Fiddler,下面是一个场景。我已经编写了使用数字证书从安全url获取cookie的代码,然后使用检索到的cookie和相同的数字证书将数据发布回另一个url。GET工作和cookies被检索,POST返回错误500。我安装了fiddler来看看发生了什么…帖子看起来不错…有饼干。我在fiddler中使用了允许通过拖放创建请求的功能。发布与在fiddler中记录的C代码完全相同的帖子,它可以正常工作 Fiddler在做什么而VisualStudio没有?如果fiddler可以发布数据,但VisualStudi

下面是一个场景。我已经编写了使用数字证书从安全url获取cookie的代码,然后使用检索到的cookie和相同的数字证书将数据发布回另一个url。GET工作和cookies被检索,POST返回错误500。我安装了fiddler来看看发生了什么…帖子看起来不错…有饼干。我在fiddler中使用了允许通过拖放创建请求的功能。发布与在fiddler中记录的C代码完全相同的帖子,它可以正常工作

Fiddler在做什么而VisualStudio没有?如果fiddler可以发布数据,但VisualStudio返回错误500,那么它一定在做什么。代码如下:

X509Certificate cert = new X509Certificate("mycert.pfx", "certpassword");
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://servertoGETcookies/fileUpload.html");
req.CookieContainer = new CookieContainer();
req.Method = "GET";
req.ClientCertificates.Add(cert);

HttpWebResponse Response = (HttpWebResponse)req.GetResponse();
CookieCollection ck = req.CookieContainer.GetCookies(req.RequestUri);
string strcookie = ck[0].Value;
string strcookie2 = ck[1].Value;
Response.Close();

req = (HttpWebRequest)WebRequest.Create("https://servertoPOSTdatawithcookies/main");
req.CookieContainer = new CookieContainer();
Cookie auth = new Cookie("_wl_authcookie_", strcookie2);
Cookie jsess = new Cookie("JSESSIONID", strcookie);
auth.Domain = "server";
jsess.Domain = "server";
req.CookieContainer.Add(auth);
req.CookieContainer.Add(jsess);
req.ClientCertificates.Add(cert);
req.Method = "POST";

Byte[] data = ReadByteArrayFromFile("filewithdatatoPOST.txt");
req.ContentLength = data.Length;
Stream myStream = req.GetRequestStream();
myStream.Write(data, 0, data.Length);
myStream.Close();

HttpWebResponse Response2 = (HttpWebResponse)req.GetResponse();
Stream strm = Response2.GetResponseStream();
StreamReader sr2 = new StreamReader(strm);
Response2.Close();

如果设置

req.ServicePoint.Expect100Continue = false; 

关于您的所有网络请求?

已解决!!!这与我们的计划无关

所以经过几周的故障排除…6个不同的程序员…我找到了答案。我不确定这是否总是正确的,但在这种情况下,问题是我们从中获取cookie的url:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://servertoGETcookies/fileUpload.html");
与我们将数据发布回的url不相同:

req = (HttpWebRequest)WebRequest.Create("https://servertoPOSTdatawithcookies/main");
获取cookies并发回同一url修复了此问题:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create("https://servertoGETandPOSTcookies/main");
req = (HttpWebRequest)WebRequest.Create("https://servertoGETandPOSTcookies/main");

谢谢,但现在还有一个问题。来自fiddler的帖子以预期结果回应,即提交x。来自Visual Studio的帖子就像没有帖子一样,也就是说,如果我没有发布任何东西。我发布的文件中的文本被假定为好像我按下了一个按钮以上载包含数据的文件:代码时间戳内容处置:表单数据;名称=动作文件上传-时间戳内容配置:表单数据;name=浏览文件;filename=fileuploading.txt内容类型:text/plain Meter Daily***12345123,Unit,04/11/2011 1123.000 2123.000抱歉…试图标记为有用,但我在这里没有足够的声誉。