SQL DB へのサービス リクエストがあったにもかかわらず、私は同じ問題を抱えていました。
これは、サービス エラー ログに記録されていたものです。
System.Data.SqlClient.SqlException: サーバーに要求を送信するときにトランスポート レベルのエラーが発生しました。(プロバイダー: TCP プロバイダー、エラー: 0 - 既存の接続がリモート ホストによって強制的に閉じられました。)
サービスをテストする C# テスト スイートがあります。サービスとDBはどちらも外部サーバー上にあったため、それが問題であると考えました。そのため、サービスとDBをローカルにデプロイしましたが、役に立ちませんでした。問題は続きました。このテスト スイートは、厳密なパフォーマンス テストでさえないので、何が起こっているのかわかりませんでした。毎回同じテストが失敗していましたが、そのテストを無効にすると、別のテストが連続して失敗しました。
インターネットで提案された他の方法も試しましたが、うまくいきませんでした。
- TcpMaxDataRetransmissionsおよびTcpMaxConnectRetransmissionsのレジストリ値を増やします。
- [クライアント プロトコル] の下の SQL Server 構成マネージャー内の [共有メモリ] オプションを無効にし、TCP/IP をリストの 1 番目に並べ替えます。
- これは、多数のクライアント接続試行でスケーラビリティをテストしている場合に発生する可能性があります。この問題を解決するには、regedit.exe ユーティリティを使用して、SynAttackProtect という名前の新しい DWORD 値をレジストリ キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ に値データ 00000000 で追加します。
私の最後の手段は、「もう一度試してみてください」という古い年齢を使用することでした。そのため、下位の通信プロトコルで TCP/IP 接続が失われた場合に、そこで断念せずに再試行するように、try-catch ステートメントをネストしました。これは現在私にとってはうまくいっていますが、非常にエレガントなソリューションではありません。