WSE 3.0 Windows 7 Совместимость - PullRequest
       4

WSE 3.0 Windows 7 Совместимость

0 голосов
/ 02 ноября 2010

У меня есть приложение .NET 2.0, которое использует WSE 3.0 для выполнения вызовов веб-службы по SSL. Приложение прекрасно работает в Windows XP после того, как я применил исправление реестра, которое объясняется здесь .

Исправление говорит об использовании значения DWORD записи UseScsvForTls вместе со ненулевым значением в следующем пути реестра для отправки 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, чтобы исправить эту ошибку? Или WSE не поддерживается в Windows 7?

1 Ответ

2 голосов
/ 19 ноября 2010

Оказывается, проблема действительно была похожа на проблему в XP, которая требовала исправления реестра. Я использовал Wireshark, чтобы проверить SSL-запрос и ответ. Так что оказалось, что веб-служба, на которую я звонил, использует старую версию SSL (версия 3.0), которая больше не поддерживается по умолчанию в Windows 7.

Исправлено добавление этой строки кода, чтобы заставить клиента использовать SSLv3:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
...