Visual studio webclient出现问题:预期失败?
我有一个自定义Http处理程序,它可以处理Http POST和GET。我得到了一个独立的服务器上工作的项目,现在需要把它投入生产Visual studio webclient出现问题:预期失败?,visual-studio,httphandler,webclient,system.net.webexception,Visual Studio,Httphandler,Webclient,System.net.webexception,我有一个自定义Http处理程序,它可以处理Http POST和GET。我得到了一个独立的服务器上工作的项目,现在需要把它投入生产 using (var client = new WebClient()) { client.Credentials = CredentialCache.DefaultCredentials; client.UploadFile("serverlocation
using (var client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
client.UploadFile("serverlocation:port", fileToUpload);
}
由于某种原因,现在使用
client.UploadFile(“,file”)时代码>即强制HTTP POST
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%确定这段代码应该在哪里,我假设在我使用WebClient之前
编辑0:
我只有以下几点:
由于存在较旧的实现,该协议允许
客户机可能发送“Expect:100”的不明确情况-
继续“但未收到417(预期失败)状态
或100(继续)状态。因此,当客户端发送此
发送到源服务器(可能通过代理)的头字段,从中
从未见过100(继续)状态,客户端不应等待
在发送请求正文之前的无限期
我相信这个请求是通过一个代理进行的,这可能与这个问题有关
编辑1:
相信100 continue会出现此问题,因为使用fiddler可以准确查看我的应用程序通过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代码>在using语句之前。我认为这一行实际上不起作用。我最后解决了这个问题,将ServicePointManager.Expect100Continue=false调用WebClient类的构造函数中的代码>
然后我检查POST请求,以确保请求中不再包含Expect:100 continue