2017-06-16 1 views
0

Notre serveur a été désactivé SSLv3, TLS1.0 et TLS1.1. Pour cette raison, Visual Studio échoue lors de la tentative d'ajout de référence de service lors de la tentative de récupération du WSDL.Service WCF + client (version TLS1.2)

« La connexion sous-jacente a été fermée. Une erreur inattendue est survenue sur un envoi Impossible de lire les données de la connexion de transport. Une connexion existante a été fermée de force par l'hôte distant Une connexion existante a été fermée de force par l'hôte distant Les métadonnées contiennent une référence qui ne peut pas être résolue: Une erreur s'est produite lors de l'envoi de la requête HTTP à https://mywebsite.com/Service/Service.svc?wsdl Cela peut être dû au fait que le certificat du serveur n'est pas configuré correctement avec HTTP.SYS dans le cas HTTPS. La connexion sous-jacente a été fermée: Une connexion inattendue entre le client et le serveur peut être due à une non-concordance de la liaison de sécurité entre le client et le serveur. erreur survenue lors d'un envoi. L'authentification a échoué car la partie distante a fermé le flux de transport. Si le service est défini dans la solution actuelle, essayer de construire la solution et en ajoutant la référence de service à nouveau. »

Le WSDL est accessible dans le navigateur. Les téléchargements WSDL correct lorsque TLS 1.0/1.1 et SSLv3 sont permis. Toutefois, en raison des exigences PCI, nous devons désactiver SSLV3, TLS1.0 et TLS1.1.

Je suis conscient de la System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; suivante, mais je suis pas tout à fait sûr que cela irait dans le client Console de connexion ou Service WCF (ou les deux)

Tout conseil serait un ppreciated

+1

Cela devrait aller dans le client car c'est le client qui établit la connexion – Dijkgraaf

+1

Voir également http://blogs.perficient.com/microsoft/2016/04/tsl-1-2-and-net-support/ C'est dépendant de la version .Net. – Dijkgraaf

+0

Dij - cela a fonctionné et maintenant je reçois un délai d'attente que je vais devoir traquer, mais beaucoup mieux que le message précédent! Si vous postez comme une réponse au lieu d'un commentaire, je vais vous upvote. :) Merci pour la clarté. Aucun changement n'a été apporté au service - le client a été forcé de se connecter en utilisant TLS1.2 en utilisant la ligne ci-dessus. Si je cible le framework .net 4.6.1+ il est par défaut à tls 1.2 et je n'ai pas besoin de la ligne –

Répondre

1

La ligne au-dessous de la ligne doit être dans le client, car c'est ce qui établit la connexion.

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 

Comme par ce blog TLS 1.2 and .NET Support: How to Avoid Connection Errors, le ci-dessus fonctionnera pour 4,5

.Net pour .Net 4.6 et au-dessus par défaut à TLS 1.2 et vous n'avez pas besoin de spécifier TLS 1.2

Pour. Net 4.0, vous avez besoin de ce qui suit à la place.

System.Net.ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; 

NET 3.5 ou inférieur, vous devez installer le correctif Microsoft approprié pour votre système d'exploitation (répertorié dans le blog).

+0

Merci encore pour votre aide. –