c# - Http 请求从测试服务器上的 ASP.NET 代码失败(也从 IE 失败......但不是 firefox!?)

标签 c# asp.net internet-explorer httprequest remote-host

我正在将 HttpRequests 从我的 ASP.NET 应用程序发送到外部服务器,发送到一个 URL,例如:

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

服务器正在运行一个使用 xml 响应这些请求的服务(如网络服务)。我的代码发出这样的 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 box)上它失败了,出现了这个异常:

System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send.
---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host.
---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host

谷歌搜索告诉我这个错误有大约一百万种不同的可能原因。似乎没有一个适用。

详细信息:

  • 我可以通过将 URL 粘贴到浏览器来发出请求,这适用于开发服务器,但在测试服务器上,它适用于 Firefox 但不适用于 IE(!?!)IE给出一个通用的“Internet Explorer 无法显示该网页”- 如果我将 IP 地址更改为不存在的内容,看起来完全一样。
  • 服务器由自签名 SSL 证书保护,该证书已添加到两个客户端(测试和开发箱)上本地计算机的受信任证书存储中。但这不太可能是证书问题,因为它在开发上运行良好,并且如果您忽略证书验证(在测试中)仍然会发生。
  • 我可以从测试箱远程登录到服务器(使用正确的 IP 和端口)。

任何人都可以建议尝试一下吗?一个可能的原因?缩小范围的方法?

最佳答案

我终于在服务器的windows事件日志中发现了一个相关的错误:

从远程客户端应用程序接收到 TLS 1.0 连接请求,但服务器不支持客户端应用程序支持的密码套件。 SSL 连接请求失败。

我创建了一个新问题,一个实际上可以回答的问题,在这里:How to add to the cipher suites available to ASP.NET HttpRequest client?

关于c# - Http 请求从测试服务器上的 ASP.NET 代码失败(也从 IE 失败......但不是 firefox!?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17106365/

相关文章:

javascript - 通过 javascript 在 chrome 中使用新选项卡打开页面

HTML Click 适用于 IE,不适用于 FireFox、Chrome

用于 HTTP 302 的 AngularJS 拦截器不适用于 IE

c# - Parallel.ForEach 和无法从关闭的 TextReader 异常中读取

c# - 构建器模式实现 C# vs. JAVA

asp.net - 如何在asp.net Repeater控件中获取项目点击事件?

应用于 IE 内容的 CSS3 Box-Shadow

c# - LINQ:如何返回所有父元素的所有子元素

c# - .Net AsyncStateMachine 自定义实现行为

.net - 输入键触发错误的提交按钮