我知道类似的问题可能已被多次询问,但我想表达我所看到的行为,并发现是否有人可以帮助预测其原因。
我正在编写一个通过TCP连接到其他Windows服务的Windows服务。 这有100个用户实体,每个有5个连接。这些用户使用各自的连接执行任务。
该应用程序继续观察此问题1或2天。或者有时在启动后立即显示问题(-rarely)。我最好的运行就像4到5天没有显示这个例外。在那个申请去世后,我不得不因各种原因而停止申请。
我想知道导致这种情况的原因是什么? 这是堆栈跟踪。
System.IO.IOException: Unable to write data to the transport connection: An established connection was aborted by the software in your host machine. ---> System.Net.Sockets.SocketException: An established connection was aborted by the software in your host machine
at System.Net.Sockets.Socket.Send(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
--- End of inner exception stack trace ---
at System.Net.Sockets.NetworkStream.Write(Byte[] buffer, Int32 offset, Int32 size)
at System.Net.Security._SslStream.StartWriting(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security._SslStream.ProcessWrite(Byte[] buffer, Int32 offset, Int32 count, AsyncProtocolRequest asyncRequest)
at System.Net.Security.SslStream.Write(Byte[] buffer, Int32 offset, Int32 count)
答案 0 :(得分:3)
你找到了解决方案吗?如果您在app.config中添加网络跟踪,也许您可以更接近解决方案?
<?xml version="1.0"?>
<configuration>
<system.diagnostics>
<sources>
<source name="System.Net.Sockets">
<listeners>
<add name="Sockets"/>
</listeners>
</source>
</sources>
<switches>
<add name="System.Net.Sockets" value="31"/>
</switches>
<sharedListeners>
<add name="Sockets" type="System.Diagnostics.TextWriterTraceListener" initializeData="c:\socketdump.log"/>
</sharedListeners>
<trace autoflush="true"/>
</system.diagnostics>
</configuration>
此外,您可以设置TLS / SSL的日志记录。添加以下DWORD并将其设置为7,到您的注册表,重新启动并观察系统事件日志中的所有schannel事件:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\EventLogging
希望有所帮助,但是我想在黑暗中可能会有很多打击......