WebClient的问题:期望失败了?
-
24-10-2019 - |
题
我有一个自定义的HTTP处理程序,可以操纵HTTP帖子并获取。我让该项目在单独的隔离服务器上工作现在需要将其投入生产...
using (var client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
client.UploadFile("serverlocation:port", fileToUpload);
}
现在出于某种原因使用 client.UploadFile("", file);
IE强迫HTTP帖子
System.Net.WebException: The remote server returned an error: (417) Expectation failed.
at System.Net.WebClient.UploadFile(Uri address, String method, String fileName)
这会是什么?我知道代码有效,还有什么?也许服务器阻止HTTP POST请求?
我尝试添加:
ServicePointManager.Expect100Continue = false;
但是我没有100%确定以前应该在哪里,但我假设我没有成功
编辑0:
我刚刚 读 以下:
由于存在较旧的实施,该协议允许歧义情况,在这种情况下,客户可以在未收到417(期望失败)状态或100(继续)状态的情况下发送“期望:100-继续”。因此,当客户端将此标头字段发送到从未见过100(继续)状态的原始服务器(可能是通过代理)时,客户不应在发送请求主体之前等待无限期。
我相信这个请求正在经历代理,这可能与问题有关。
编辑1:
相信这个问题必须在100范围内,因为,使用提示器准确查看我的应用程序正在发送的内容 WebClient.UploadFile
显示以下内容:
POST http://XXX.XXX.XXX.XXX:8091/file.myhandledextension HTTP/1.1
Content-Type: multipart/form-data; boundary=---------------------8ccd1eb03f78bc2
Host: XXX.XXX.XXX.XXX:8091
Content-Length: 4492
Expect: 100-continue
尽管说了这条线: ServicePointManager.Expect100Continue = false;
在使用语句之前。我认为这条线实际上不起作用。
解决方案
我最终通过把它解决了 ServicePointManager.Expect100Continue = false;
在调用WebClient类的构造函数中。
然后我用了 提琴手 检查邮政请求以确保 Expect: 100-continue
不再需要。
不隶属于 StackOverflow