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 で接続できます。
誰かが試してみることを提案できますか? 考えられる原因は?少し絞る方法はありますか?