winXP上的https请求错误

时间:2015-07-15 09:08:01

标签: c# .net windows web-services service-reference

我有一个c#console应用程序,它使用webservice(一个政府的公共Web服务)。为此,我在我的C#-Project中添加了一个Webservice Reference,调用适当的方法,一切正常。除了一台电脑。

它是Windows XP SP2 PC,我安装了.net framework 4(这是我的应用程序的目标框架)。当我在这里调用相同的命令行工具时,我总是收到一条错误消息。具有相同参数的相同工具的100%百分比在其他所有客户端(Windows 7,Windows 8,Windows 8.1,甚至其他Windows XP计算机)上都能正常工作!?!?!?

错误讯息:

  

未处理的异常:System.ServiceModel.CommunicationException:An   发出HTTP请求时发生错误   https://adress.com/services/TheServiceWSI

     

这可能是因为服务器证书不是   在HTTPS情况下使用HTTP.SYS正确配置。这也可以   是由客户端和客户端之间的安全绑定不匹配引起的   服务器。   ---> System.Net.WebException:基础连接已关闭:发送时发生意外错误。   ---> System.IO.IOException:从传输流中收到意外的EOF或0字节。

我试过了:

  • 停用防火墙
  • 重新安装.net framwork 4
  • 停用antvir软件
  • 安装所有Windows更新

但没有成功......

有谁知道这里可能出现什么问题?

提前致谢!

2 个答案:

答案 0 :(得分:1)

以下是一些可以快速查看的简单可能性:

  1. 问题表明该计算机正在使用XP SP2,但已应用所有Windows更新。工作的XP机器是SP2还是SP3? .NET 4.0被设计为在SP3上运行,因此如果可能在您的环境中运行,如果您还没有这样做,那么由于多种原因,这将是一次谨慎的更新。
  2. 由于去年年底的POODLE漏洞,很多服务器都放弃了对SSL 3.0(及更低版本)的支持,现在需要TLS 1.0或更高版本。您可能需要检查控制面板/ Internet属性/高级/安全性,以查看在问题计算机上安装和启用的SSL版本列表,并确保已安装并检查TLS 1.0。
  3. 检查问题机器上的系统时间是否与其他机器大致相同(它没有太多关闭)。

答案 1 :(得分:1)

TL; DR;确保使用SP3和所有安全补丁完全修补XP安装。修补了许多SSL / TLS漏洞。

我认识到这个问题,它可能与BEAST漏洞缓解有关(尽管也可能是其他答案中提到的其他漏洞补丁之一)。在Apple与Mavericks结束缓解后,我在与旧的Windows服务交谈时遇到了类似的错误。原因与数据包如何碎片化有关,这会在实现中引发错误,而这些错误并不完全符合规范(显然微软早先没有,但现在却是这样)。

无论哪种方式,您都需要删除SP2并确保运行SP3。

如果您可以控制服务器,则可以尝试disable the BEAST mitigation。根据该帖子,XP SP3 与BEAST缓解工作,因此它可能更具学术兴趣。在生产环境中禁用与安全相关的修复可能并不明智。

正如您可能已经意识到的那样,Windows XP长期以来已经通过了扩展支持,并且已经超过一年没有安全补丁了。