gpt4 book ai didi

c# - The underlying connection 上的另一个线程已关闭。预期保持事件状态的连接已被服务器关闭

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:40 27 4
gpt4 key购买 nike

我已经看到很多关于这个主题的话题......但是谷歌上的解决方案对我不起作用。

我正在使用 HttpWebRequest 对象执行 POST 操作,当我尝试发布大量数据时出现错误

The underlying connection was closed. A connection that was expected to be kept alive was closed by the server

现在我谷歌了一下,找到了三个解决方案

  1. 设置 KeepAlive=False 并设置 ProtocolVersion = HttpVersion10。

当我这样做时,没有错误...但是不知何故,我所提供的数据没有到达服务器。 (所以不知何故它默默地失败了......没有任何错误)。

如果我删除 KeepAlive=false 并设置 ProtocolVersion = HttpVersion10。然后我可以看到对于小请求一切正常....但是对于大请求我得到底层连接已关闭的错误。

  1. 我还发现有些人通过改用 HttpClient 而不是 HttpWebRequest 解决了问题...但我认为它仅适用于 .NET 4.5,但我必须至少为 .NET 3.5 编译代码。

  2. 有些人通过

    解决了这个问题

    ServicePoint sp = ServicePointManager.FindServicePoint(request.RequestUri);sp.Expect100Continue = false;

再一次,这没有抛出任何错误。但数据未提交。

所以对我来说,这些解决方案都行不通。你有什么想法吗?

这是我的代码

  HttpWebRequest request = (HttpWebRequest)WebRequest.Create(completeUrl);
request.CookieContainer = Utility.GetSSOCookie(completeUrl);
request.Method = httpMethod;
request.Timeout = int.MaxValue;
Stream reqStream = null;
string output = null;
try {
if (String.IsNullOrEmpty(input) == false) {
byte[] buffer = Encoding.GetEncoding("UTF-8").GetBytes(
input
);

request.ContentLength = buffer.Length;
reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
}
using (WebResponse response = request.GetResponse()) {
using (StreamReader reader = new StreamReader(response.GetResponseStream())) {
output = reader.ReadToEnd();
}
}
}

最佳答案

此异常可能会产生误导。

在 c# httpclient 与 iis (v7) 上的 asp-mvc (v5) 应用程序对话的情况下,我遇到了相同的异常。在我发现服务器在 recrusion-loop 中运行而没有抛出 stackoverflow 或任何日志之后。结果是服务器响应客户端断开连接。也许这可以帮助遇到此类错误的人。

关于c# - The underlying connection 上的另一个线程已关闭。预期保持事件状态的连接已被服务器关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649007/

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