gpt4 book ai didi

visual-studio - 网络客户端问题 : Expectation failed?

转载 作者:行者123 更新时间:2023-12-01 02:56:00 25 4
gpt4 key购买 nike

我有一个自定义的 Http Handler 来操作 HTTP POST 和 GET。我让项目在单独的隔离服务器上工作,现在需要将其投入生产......

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:

我只有 read以下:

由于存在较旧的实现,该协议(protocol)允许
客户可能会发送“期望: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 类的构造函数中。

然后我用了Fiddler检查 POST 请求以确保 Expect: 100-continue不再在请求中。

关于visual-studio - 网络客户端问题 : Expectation failed?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com