我有ac#控制台应用程序,它消耗了一个web服务(一个政府的公共web服务)。 要做到这一点,我在我的C#项目中添加了一个Web服务引用,调用适当的方法,一切工作正常。 除了在一台PC上。
这是一个Windows XP SP2电脑,我安装了.NET Framework 4(这是我的应用程序的目标框架)。 当我在这里调用相同的命令行工具时,我总是得到一个错误信息。 100%的百分比,相同参数的工具在其他所有客户端(Windows 7,Windows 8,Windows 8.1,甚至其他Windows XP计算机)上都能正常工作。
错误信息:
未处理的exception:System.ServiceModel.CommunicationException:将HTTP请求发送到https://adress.com/services/TheServiceWSI时发生错误。
- Windows服务日志写入系统关机/重新启动
- “最大的自由区域”性能计数器?
- 什么是顺序DLL版本的正确方法
- 在C#中获取本地Windows用户login会话时间戳
- DataGridView性能 – 它取决于video卡?
这可能是由于在HTTPS情况下服务器证书未正确configurationHTTP.SYS。 这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。 —> System.Net.WebException:底层连接已closures:发送时发生意外错误。 —> System.IO.IOException:从传输stream中收到一个意外的EOF或0字节。
我试过了:
但没有成功…
有没有人有一个想法可能是这里的问题?
提前致谢!
TL; DR; 确保您的XP安装完全通过SP3和所有安全补丁修补。 很多SSL / TLS漏洞被修补。
我认识到这个问题,它可能与BEAST漏洞缓解有关(尽管也可能是其他答案中提到的其他漏洞补丁之一)。 苹果公司在小牛队实施了缓解措施之后,在与旧的Windows服务交流时也遇到了类似的错误。 原因是数据包是如何被分割的,这在实际上并没有严格遵循规范的情况下触发了错误(显然,微软并没有早些这样做,但现在已经是这样)。
无论哪种方式,你需要放弃SP2,并确保你运行SP3。
如果您可以控制服务器,则可以尝试禁用BEAST缓解 。 根据那个帖子,XP SP3 应该和BEAST的缓解一起工作,所以它可能更多的是学术上的兴趣。 在生产环境中禁用与安全相关的修补程序可能不明智。
正如您可能已经意识到的那样,Windows XP早已超过了扩展支持的范围,并在一年之内没有安全补丁。
这里有几个简单的可能性,你可以很快看到: