Windowsエラー
 Computer >> コンピューター >  >> トラブルシューティング >> Windowsエラー

【解決済み】「既存の接続がリモート ホストによって強制的に切断されました」エラーの直し方

「既存の接続がリモート ホストによって強制的に切断されました」エラーとは

リモートコンピューターとは、物理的な実体を持たず、何らかのコンピューターネットワークを通じてのみアクセスできるコンピューターのことです。リモートホストはそのネットワークをホストするコンピューターであり、リモートクライアントはネットワーク上でリモート機能を利用するユーザーを指します。この仕組みは数多くの業務プロセスに革命をもたらしており、今後もさらなる発展が期待される重要な技術です。

【解決済み】「既存の接続がリモート ホストによって強制的に切断されました」エラーの直し方

しかし近年、「既存の接続がリモート ホストによって強制的に切断されました(An existing connection was forcibly closed by the remote host)」というエラーが発生するという報告が多数寄せられています。このエラーは、クライアントとサーバー間のソケット接続において発生します。本記事では、このエラーを完全に解消するための有効な解決策と、エラーを引き起こす原因について詳しく解説します。

Windowsでこのエラーが発生する主な原因

複数のユーザーから寄せられた報告をもとに調査を行い、問題を解決するための一連の対策をまとめました。あわせて、エラーが発生する主な原因も以下に整理しています。

  • TLS 1.1/1.0 の使用: アプリケーションがTLS 1.1またはTLS 1.0で動作している場合、これらのプロトコルはすでに非推奨となっているため、このエラーが発生することがあります。使用するプロトコルはTLS 1.2を選択しましょう。
  • 暗号化(Cryptography)が無効: マシンで暗号化機能が無効になっていると、TLS 1.2の使用が妨げられ、TLS 1.0へフォールバックしてしまうため、エラーが発生する可能性があります。
  • ソケットの実装方法: 特定の種類のソケット実装がエラーを引き起こすケースがあります。「.NET」の一部の実装にはバグがあり、このエラーの原因となることがあります。
  • コードの欠落: Entity Frameworkを使用している一部の環境では、特定のコード行が欠落していたためにエラーが発生していることが確認されました。
  • 「.NET」Frameworkが古い: 場合によっては、「.NET」Frameworkが古い、または無効になっていることが原因でエラーが発生します。一部のタスクを正常に動作させるには、最新版への更新が必要です。

問題の概要をご理解いただけたところで、解決策に進みましょう。競合や不具合を避けるため、必ず記載された順番どおりに実施してください。

解決策1:暗号化(Cryptography)を有効にする

マシンで暗号化が無効になっていると、TLS 1.2の使用が禁止されます。そこで、この手順では暗号化を有効にします。以下の手順に従ってください。

  1. Windows」キー +「R」キーを押して「ファイル名を指定して実行」を開きます。
  2. regedit」と入力し、「Enter」キーを押します。【解決済み】「既存の接続がリモート ホストによって強制的に切断されました」エラーの直し方
  3. レジストリエディターで、次のアドレスへ移動します。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319
    右ペインに「SchUseStrongCrypto」という値が存在しない場合は、代わりに次のアドレスへ移動します。
    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
  4. 右ペインの「SchUseStrongCrypto」をダブルクリックし、値のデータに「1」を入力します。【解決済み】「既存の接続がリモート ホストによって強制的に切断されました」エラーの直し方
  5. OK」をクリックして変更を保存し、問題が解決したかどうかを確認します。

解決策2:TLS 1.2の使用を強制する

アプリケーションがTLS 1.2ではなくTLS 1.1やTLS 1.0を使用するよう設定されている場合、このエラーが発生することがあります。そこで、この手順ではTLS 1.2を使用するように設定を変更します。

  1. サイトのルートディレクトリに移動し、「global.asax」ファイルを右クリックします。
  2. 一覧から「コードの表示(View Code)」を選択します。
  3. Application_Start」メソッドを見つけ、そのメソッド内に以下のコード行を追加します。
    if (ServicePointManager.SecurityProtocol.HasFlag(SecurityProtocolType.Tls12) == false)
    {
        ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12;
    }
    【解決済み】「既存の接続がリモート ホストによって強制的に切断されました」エラーの直し方
  4. 変更を保存し、問題が解決したかどうかを確認します。

解決策3:ソケットの実装を変更する

特定のソケット実装にバグや不具合があると、アプリケーションの一部が正常に動作せず、このエラーが発生することがあります。そこで、この手順では別の実装を使用するように構成を変更します。

  1. StateObject」クラスに「public byte[] buffer = new byte[1024]」および「public Socket socket;」が定義されていることを確認します。
  2. Receive(Socket s)」関数を呼び出し、「void ReceiveCallback(IAsyncResult ar)」内で以下のコードを呼び出します。
    SocketError errorCode;
    int nBytesRec = socket.EndReceive(ar, out errorCode);
    if (errorCode != SocketError.Success)
    {
        nBytesRec = 0;
    }
  3. このコードを実装した後、問題が解決したかどうかを確認します。

解決策4:コード行を追加する(Entity Framework利用時のみ)

Entity Frameworkを使用している場合、特定のコード行が欠落している可能性があります。そこで、この手順ではそのコード行を追加して問題を修正します。

  1. .edmx」ファイルを開き、その下にある「.context.tt」ファイルを開きます。
  2. .context.cs」ファイルを開き、コンストラクターに以下のコード行を追加します。
    public DBEntities() 
        : base("name=DBEntities") 
    { 
        this.Configuration.ProxyCreationEnabled = false; // この行を追加!
    }
  3. このコード行を追加した後、問題が解決したかどうかを確認します。

解決策5:.NET Frameworkを更新する

すべての機能をスムーズに動作させるには、最新版の「.NET」Frameworkが必要です。そこで、この手順では公式サイトから最新版をダウンロードしてインストールします。

  1. こちらのリンクからセットアップファイルをダウンロードします。
  2. .exe」ファイルを実行してインストールプロセスを開始します。【解決済み】「既存の接続がリモート ホストによって強制的に切断されました」エラーの直し方
  3. 画面の指示に従って、アプリケーションをコンピューターにインストールします。
  4. インストール完了後、問題が解決したかどうかを確認します。
  1. 「リモートデバイスまたはリソースが接続を受け入れません」エラーの原因と解決方法

    PCからインターネットに接続できず、「接続が制限されています」と表示されることはありませんか?原因はさまざまですが、まず試すのがネットワーク診断ツールです。このとき「リモートデバイスまたはリソースが接続を受け入れません(The remote device or resource wont accept the connection)」というエラーメッセージが表示されることがあります。 このエラーが発生する原因 このエラーは、主にネットワーク設定の誤りや、PC上のネットワーク構成が何らかの理由で変更された場合に発生します。例えば、ブラウザの設定でプロキシサーバーが有効になっている、あるいは誤っ

  2. Windows 10で「リモート プロシージャ呼び出しに失敗しました」エラーを解決する方法

    Windows 10では、さまざまなシステムエラーや不具合が発生することがありますが、その多くは適切な対処法によって解決できます。Windows 10で「リモート プロシージャ呼び出しに失敗しました(The remote procedure call failed)」というエラーに悩んでいる方もご安心ください。この記事では、この問題の原因と具体的な解決方法をわかりやすく解説します。リモート プロシージャ コール(RPC)とは?RPC(Remote Procedure Call:リモート プロシージャ コール)とは、異なるコンピュータ上で動作するプログラム同士が、互いの手続き(サブルーチン)を呼