我已经看到很多关于这个话题的主题......但谷歌上的解决方案对我不起作用。
我正在使用HttpWebRequest对象进行POST操作,当我尝试发布大量数据时出现错误
The underlying connection was closed. A connection that was expected to be kept alive was closed by the server
现在我用Google搜索,我找到了三个解决方案
当我这样做时,没有错误......但不知怎的,我冒充的数据没有到达服务器。 (所以它以某种方式无声地失败......没有任何错误)。
如果我删除KeepAlive = false并设置ProtocolVersion = HttpVersion10。然后我可以看到,对于小的请求,一切正常....但对于大的请求,我得到底层连接的错误已关闭。
我还发现有些人通过迁移到HttpClient而不是HttpWebRequest解决了这个问题...但我认为它仅适用于.NET 4.5,但我必须至少为.NET 3.5编译代码。
有些人通过
解决了这个问题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();
}
}
}
答案 0 :(得分:0)
此例外可能具有误导性。
在c#httpclient与iis(v7)上的asp-mvc(v5)应用程序对话的情况下,我得到了相同的异常。之后我发现服务器在一个回弹循环中运行而没有抛出stackoverflow或任何日志。结果是服务器响应了对客户端的disconection。也许这可以帮助遇到这种错误的人。