无法从传输连接读取数据:远程主机强制关闭现有连接

无法从传输连接读取数据:远程主机强制关闭现有连接

我遇到了一个程序问题,6 分钟 +- 5 秒后我们得到了上述异常。下面是有关异常堆栈跟踪的更多信息。这一切都发生得非常频繁,6 分钟过去了,然后出现了以下 3 个异常。我们已在其他 2 个环境中安装了该应用程序,它在那里运行良好。我希望找到一些可能导致此问题发生的服务器设置,无论是 IIS 6 还是 Server 2003 设置。

我查看了一些类似的问题,但没有看到太多答案。我希望我提供的信息可能对您有所帮助。

208741,Exception,,,,2011-06-21 00:30:14.193,SERVERNAME,2624,1,CLIENTNAME,The underlying connection was closed: An unexpected error occurred on a receive. ,   at System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)
 at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)
 at Microsoft.Web.Services3.WebServicesClientProtocol.GetResponse(WebRequest request, IAsyncResult result)
 at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
 at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
 at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
 at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
 at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
 at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
 at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size)
 at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
 at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead),2004437127,114,1

208742,Exception,,,,2011-06-21 00:30:14.227,SERVERNAME,2624,1,CLIENTNAME,Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ,   at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
 at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
 at System.Net.Security._SslStream.StartFrameHeader(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
 at System.Net.Security._SslStream.StartReading(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
 at System.Net.Security._SslStream.ProcessRead(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
 at System.Net.TlsStream.Read(Byte[] buffer, Int32 offset, Int32 size)
 at System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size)
 at System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead),2004437127,114,1

208743,Exception,,,,2011-06-21 00:30:14.287,SERVERNAME,2624,1,CLIENTNAME,An existing connection was forcibly closed by the remote host ,   
 at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size),-691097507,62,1

答案1

您的应用程序是否使用 HTTP 保持活动来保持连接打开,或者这是一个大文件传输?

查看 IIS 中的超时设置(MS 有一个很好的参考这里),但我的直觉告诉我它不存在——该错误似乎意味着正在收到一个 RST 数据包,而对于 Web 服务器来说,在由于超时而关闭连接时使用这个数据包是没有意义的。

检查是否涉及 IIS 以外的任何因素;具体来说,如果网络路径中存在防火墙或代理服务器,那么它可能会强制执行其自己的超时值。

相关内容