2010-11-02 11 views
0

J'ai une application .NET 2.0 qui utilise WSE 3.0 pour effectuer des appels de service Web via SSL. L'application fonctionne parfaitement sur Windows XP après avoir appliqué une correction de registre qui est expliquée here.WSE 3.0 Windows 7 Compatibilité

Le correctif dit d'utiliser l'entrée UseScsvForTls valeur DWORD avec une valeur non nulle dans le chemin de Registre suivante pour envoyer SCSV pour la signalisation dans TLS: HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ SecurityProviders \ SCHANNEL

Quand je essayez d'exécuter la même application sur une machine Windows 7 (sans correctif de registre), je reçois l'erreur suivante:

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) 

Ma question est: est-il une solution de registre que je peux utiliser sur Windows 7 pour corriger cette erreur ? Ou est-ce que WSE n'est pas supporté sur Windows 7?

+0

Pour le bénéfice de toute autre personne lisant ceci: WSE est obsolète. La meilleure solution aurait été de l'éliminer et d'utiliser WCF. –

+0

Bien que je sois d'accord que, en général, nous devrions passer à la WCF, je ne vois pas comment cela aurait résolu ce problème particulier. Dans ce cas, le serveur utilise une ancienne version SSL. Est-ce que WCF permet la communication SSLv3 hors de la boîte? – Zak

Répondre

2

Il s'avère que le problème était en effet similaire à celui sur XP qui nécessitait un correctif de registre. J'ai utilisé Wireshark pour vérifier la demande SSL et la réponse. Donc, il s'est avéré que le service Web que j'appelais, utilise une ancienne version de SSL (version 3.0) qui n'est plus supportée par défaut sur Windows 7.

Le correctif était d'ajouter cette ligne de code pour forcer le client à utiliser SSLv3:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;