我有一个自定义的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 不再需要。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top