WSE 3.0 Windows 7兼容性

问题描述:

我有一个使用WSE 3.0通过SSL进行Web服务调用的.NET 2.0应用程序。应用注册表修复程序后,该应用程序在Windows XP上完美工作,该修补程序的解释为hereWSE 3.0 Windows 7兼容性

的修复说要在下面的注册表路径非零值一起使用UseScsvForTls项DWORD值发送SCSV在TLS信令: HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控制\ 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?

+0

为了读者的利益:WSE已过时。更好的解决办法是废弃它并使用WCF。 – 2010-11-19 16:56:14

+0

尽管我同意,一般来说,我们应该转向WCF,但我不明白这将如何解决这个特定的问题。在这种情况下,服务器正在使用旧的SSL版本。 WCF是否允许开箱即用的SSLv3通信? – Zak 2010-11-23 13:06:57

原来的问题确实是一个类似于在XP这需要一个注册表修复。我使用Wireshark来检查SSL请求和响应。所以事实证明,我打电话给的网络服务,使用旧版本的SSL(版本3.0),在Windows 7上默认不再支持。

修复是增加这行代码强制客户端使用SSLv3:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;