WSE 3.0 Windows 7 兼容性

Posted

技术标签:

【中文标题】WSE 3.0 Windows 7 兼容性【英文标题】:WSE 3.0 Windows 7 Compatibility 【发布时间】:2011-05-03 20:48:51 【问题描述】:

我有一个 .NET 2.0 应用程序,它使用 WSE 3.0 通过 SSL 进行 Web 服务调用。在我应用了here 解释的注册表修复程序后,该应用程序在 Windows XP 上完美运行。

修复说明使用 UseScsvForTls 条目 DWORD 值和以下注册表路径中的非零值一起发送 SCSV 以在 TLS 中发送信号: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL

当我尝试在 Windows 7 机器上运行相同的应用程序(没有任何注册表修复)时,我收到以下错误:

The underlying connection was closed: An unexpected error occurred on a send.-   at        System.Web.Services.Protocols.WebClientProtocol.GetWebResponse(WebRequest request)

at System.Web.Services.Protocols.HttpWebClientProtocol.GetWebResponse(WebRequest request)

at Microsoft.Web.Services3.WebServicesClientProtocol.GetResponse(WebRequest request, IAsyncResult result)

at Microsoft.Web.Services3.WebServicesClientProtocol.GetWebResponse(WebRequest request)

at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)  

我的问题是:我可以在 Windows 7 上使用注册表修复程序来修复此错误吗?还是 Windows 7 不支持 WSE?

【问题讨论】:

为了其他阅读本文的人的利益:WSE 已过时。更好的解决方法是废弃它并使用 WCF。 虽然我同意,总的来说,我们应该转向 WCF,但我看不出这将如何解决这个特殊问题。在这种情况下,服务器使用的是旧的 SSL 版本。 WCF 是否允许开箱即用的 SSLv3 通信? 【参考方案1】:

事实证明,这个问题确实与 XP 上需要修复注册表的问题相似。我使用 Wireshark 检查 SSL 请求和响应。结果发现我正在调用的 Web 服务使用的是旧版本的 SSL(版本 3.0),Windows 7 默认不再支持该版本。

修复方法是添加这行代码以强制客户端使用 SSLv3:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

【讨论】:

以上是关于WSE 3.0 Windows 7 兼容性的主要内容,如果未能解决你的问题,请参考以下文章

Windows10测试低版本IE

Dexguard 7.3.01 与 gradle 2.3.0 不兼容

测试 Windows 7 兼容性的任何已知 delphi 问题

window 7系统和window xp系统那个比较好,相对于兼容性,扩展性,主要帮我详细介绍下window 7

ABplayer与windows 7 兼容问题?

SWHttpTrafficRecorder AFNetworking 3.0 兼容性