リモートコンピューターは、物理的に存在しないコンピューターです。ある種のコンピュータネットワークを介してのみアクセスできます。リモートホストは、リモートコンピューターをホストするネットワークをホストするコンピューターであり、リモートクライアントはネットワーク上のリモートクライアントのユーザーです。この機能は多くのプロセスに革命をもたらし、将来的にも大きな可能性を秘めています。
ローカルホストエラーにより、既存の接続が強制的に閉じられました
しかし、ごく最近、多くの報告が寄せられています。 既存の接続がリモートホストによって強制的に閉じられました リモートホストに接続しようとしたときにエラーが発生しました。このエラーは、クライアントとサーバー間のソケット接続でトリガーされます。この記事では、このエラーを完全に修正するための実行可能なソリューションをいくつか提供し、このエラーをトリガーする理由についても説明します。
Windowsで「既存の接続がリモートホストによって強制的に閉じられました」というエラーの原因は何ですか?
複数のユーザーから多数のレポートを受け取った後、問題を調査し、それを修正するための一連のソリューションを考案することにしました。また、トリガーされた理由を調査し、以下にリストしました。
- TLS 1.1 / 1.0の使用法: アプリケーションがTLS1.1またはTLS1.0で実行されている場合、減価償却が原因でこのエラーがトリガーされる可能性があります。 TLS 1.2は、アプリケーションが使用するプロトコルを選択する際の方法です。
- 暗号化が無効: マシンで暗号化が無効になっている場合、TLS 1.2の使用が妨げられ、TLS 1.0にフォールバックして、エラーをトリガーする可能性があります。
- ソケットの実装: 場合によっては、特定のタイプのソケット実装がエラーをトリガーします。 「.NET」アプリケーションによる一部の実装にはバグがあり、このエラーが発生する可能性があります。
- 欠落しているコード: Entity Frameworkを使用していた一部の人にとって、エラーがトリガーされたために特定のコード行が欠落していることが観察されました。
- 古い「.NET」フレームワーク: 場合によっては、「。NET」Frameworkが無効になっていると、このエラーがトリガーされることがあります。特定のタスクを正しく機能させるには、「。NET」フレームワークを最新バージョンに更新する必要があります。
問題の性質についての基本的な理解ができたので、次に解決策に進みます。競合を避けるために、これらは提示された特定の順序で実装してください。
解決策1:暗号化を有効にする
マシンで暗号化が無効になっている場合、TLS1.2の使用は禁止されています。したがって、このステップでは、暗号化を有効にします。そのために:
- 押す ' ウィンドウズ 「+」 R 」をクリックして、実行プロンプトを開きます。
- 入力します 「regedit」 そして「 入る '。
「Regedit」と入力して「Enter」を押す
- 次のアドレスに移動します
HKEY_LOCAL_MACHINE SOFTWARE Microsoft .NETFramework v4.0.3031
「」がない場合は、このアドレスに移動します SchUseStrongCrypto 右ペインの「」値。
HKEY_LOCAL_MACHINE SOFTWARE Wow6432Node Microsoft .NETFramework v4.0.30319
- 右ペインで、「 SchUseStrongCrypto 」オプションを入力し、「 1 」を値データとして。
右ペインの「SchUseStrongCrypto」値をダブルクリックします
- クリック ' OK 」を使用して変更を保存し、 小切手 問題が解決しないかどうかを確認します。
解決策2:TLS1.2の使用を強制する
アプリケーションがTLS1.2の代わりにTLS1.1またはTLS1.0を使用するように構成されている場合、このエラーがトリガーされる可能性があります。したがって、このステップでは、TLS1.2を使用するようにコンピューターを構成します。そのために:
- サイトのルートに移動し、右クリックします 「global.asax」 ファイル。
- 選択する ' 見る コード リストから」。
- 「 Application_Start 」メソッドの場合、そのメソッドに次のコード行を追加します
もし ((ServicePointManager。SecurityProtocol。HasFlag((SecurityProtocolType。Tls12) == false) SecurityProtocolType。Tls12;
コードに行を追加する
- 保存する あなたの変更と 小切手 問題が解決しないかどうかを確認します。
解決策3:ソケット実装の変更
特定のソケット実装にバグや不具合があると、アプリケーションの特定の要素が正しく機能しなくなり、このエラーがトリガーされる可能性があります。したがって、このステップでは、別の実装を使用するように構成します。そのために:
- 「 StateObjec 「t」クラスと「 public byte [] buffer = new byte [1024]、public Socket socket; '。
- 「 Receive(Socket s) 」関数を使用して、「」で次のコードを呼び出します。 void ReceiveCallback(IAsyncResult ar) 「」
SocketErrorエラーコード; intnBytesRec=ソケット。EndReceive((と、 アウトエラーコード); もし ((エラーコード!= SocketError。成功) {{nBytesRec= 0; }
- このコードを実装した後も問題が解決しないかどうかを確認してください。
解決策4:コマンドラインの追加(Entity Frameworkの場合のみ)
Entity Frameworkを使用している場合、特定のコード行が欠落している可能性があります。したがって、このステップでは、この問題を修正するために、そのコード行を追加します。そのために:
- あなたの「 .edmx 」ファイルを開き、「 .context.tt その下の」ファイル。
- 「 .context.cs 」ファイルを作成し、次のコード行をコンストラクターに追加します
公衆 DBEntities() : ベース(('name = DBEntities') {{ この。構成。ProxyCreationEnabled = false; //この行を追加してください! }
- このコード行を追加した後も問題が解決しないかどうかを確認してください。
解決策5:.NETFrameworkの更新
すべてがスムーズに機能するためには、最新バージョンの「.NET」フレームワークが必要です。したがって、このステップでは、サイトから最新バージョンをダウンロードしてインストールします。そのために:
- 案内する この セットアップをダウンロードするためのリンク。
- 「 。EXE 」ファイルを使用して、インストールプロセスを開始します。
Microsoftからダウンロードした実行可能ファイルを実行する
- フォローする コンピュータにアプリケーションをインストールするための画面上の指示。
- 小切手 インストールの完了後も問題が解決しないかどうかを確認します。