我有一个处理HTTP POST和GET的自定义Http处理程序。我用client.UploadFile("", file);
即迫使HTTP POSTwebclient问题:期望失败?
System.Net.WebException: The remote server returned an error: (417) Expectation failed.
at System.Net.WebClient.UploadFile(Uri address, String method, String fileName)
当拿到项目一个单独的独立的服务器上的工作现在需要把它在生产...
using (var client = new WebClient())
{
client.Credentials = CredentialCache.DefaultCredentials;
client.UploadFile("serverlocation:port", fileToUpload);
}
出于某种原因,现在怎么办这可以吗?我知道代码有效,那还有什么?也许服务器阻止HTTP POST请求?
我曾尝试加入:
ServicePointManager.Expect100Continue = false;
但没有成功,虽然我不是100%肯定这个地方应该代码之前,我想我使用WebClient的
前
编辑0:
我刚才read如下:
由于旧的实现的存在,该协议允许 模糊的情况,其中一个客户端可以发送“期望值:100- 继续”而不接收任何一个417(预期失败)状态 或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;
之前的使用说明。我不认为这条线实际上起作用。