我正在将 HttpRequests 从我的 ASP.NET 应用程序发送到外部服务器,发送到如下 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: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。
---> System.Net.Sockets.SocketException:现有连接被远程主机强行关闭
谷歌搜索告诉我这是错误有大约一百万种不同的可能原因。似乎没有一个适用。
细节:
- 我可以通过将 URL 粘贴到浏览器中来发出请求,这适用于开发服务器,但在测试服务器上,它适用于 Firefox 但不适用于 IE(!?!) IE 给出了一个通用的“Internet Explorer 无法显示网页" - 如果我将 IP 地址更改为不存在的地址,看起来完全一样。
- 服务器由自签名 SSL 证书保护,该证书已添加到两个客户端(测试和开发框)上本地计算机的受信任证书存储中。但这不太可能是证书问题,因为它在开发中运行良好,并且如果您忽略证书验证(在测试中)仍然会发生。
- 我可以从测试框远程登录到服务器(使用正确的 IP 和端口)。
任何人都可以建议尝试一下吗?可能的原因?缩小范围的方法?