4

同様の質問が何度も出されている可能性があることは知っていますが、私が見ている動作を表し、誰かがこの原因を予測するのに役立つかどうかを知りたい.

TCP 経由で他の Windows サービスに接続する Windows サービスを作成しています。これには 100 のユーザー エンティティがあり、それぞれに 5 つの接続があります。これらのユーザーは、個々の接続を使用してタスクを実行します。

アプリケーションは、この問題が 1 ~ 2 日表示されないまま続行されます。または、起動直後に問題が発生する場合があります (-めったにありません)。私が行った最高の実行は、この例外を示さずに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)

4

1 に答える 1

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

助けてくれることを願っていますが、暗闇の中でたくさんのパンチがあるかもしれません...

于 2011-10-09T00:43:16.850 に答える