7

ASP.NET アプリケーションから外部サーバーに HttpRequests を作成しています。たとえば、次のような URL です。

https://1.2.3.4:12345/Data/Users?Id=1

サーバーは、これらの要求に xml で応答するサービス (Web サービスなど) を実行しています。私のコードは、次のような GET リクエストを作成します。

var wc = new System.Net.WebClient();
wc.Credentials = credentials; // username and password for service

// get data from server.    
string s = Encoding.ASCII.GetString(wc.DownloadData(url));
return s;

私の開発マシンでは問題なく動作します。

しかし、私のテスト マシン (古い Windows Server 2003 64 ボックス) では、次の例外で失敗します。

System.Net.WebException: 基になる接続が閉じられました: 送信時に予期しないエラーが発生しました。
---> System.IO.IOException: トランスポート接続からデータを読み取ることができません: 既存の接続がリモート ホストによって強制的に閉じられました。
---> System.Net.Sockets.SocketException:既存の接続がリモート ホストによって強制的に閉じられました

グーグルは、これがエラーであり、約100万の異なる原因が考えられることを教えてくれます。どれも当てはまらないようです。

詳細:

  • URL をブラウザーに貼り付けることで要求を行うことができます。これは Dev サーバーでは機能しますが、テスト サーバーでは Firefox では機能しますが、IE では機能しません(!?!) IE は一般的な「Internet Explorer は Web ページを表示できません」 " - IP アドレスを存在しないものに変更しても、まったく同じように見えます。
  • サーバーは、両方のクライアント (テスト ボックスと開発ボックス) のローカル コンピューターの信頼できる証明書ストアに追加された自己署名 SSL 証明書によって保護されています。ただし、dev では問題なく動作し、証明書の検証を無視すると (テストで) 発生するため、証明書の問題である可能性は低いです。
  • テスト ボックスから (正しい IP とポートを使用して) サーバーに telnet で接続できます。

誰かが試してみることを提案できますか? 考えられる原因は?少し絞る方法はありますか?

4

1 に答える 1

2

サーバーのWindowsイベントログに関連するエラーが最終的に見つかりました:

リモート クライアント アプリケーションから TLS 1.0 接続要求を受信しましたが、クライアント アプリケーションでサポートされている暗号スイートがサーバーでサポートされていません。SSL 接続要求が失敗しました。

実際に回答可能な新しい質問を作成しました。ここでは、ASP.NET HttpRequest クライアントで利用可能な暗号スイートに追加する方法は?

于 2013-06-17T05:46:25.567 に答える