CORRECTIF : URI dans un document WSDL de WCF font référence à des instances d’internes inaccessibles et non à l’équilibreur de charge comme prévu dans le.NET Framework 3.0 dans Windows Server 2003, Windows XP, Windows Vista et Windows Server 2008

Symptômes

Lorsque vous utilisez un service Windows Communication Foundation (WCF) dans les scénarios d’équilibrage de charge dans le Microsoft.NET Framework 3.0 dans Windows Server 2003, Windows XP, Windows Vista et Windows Server 2008, vous rencontrez un ou plusieurs des problèmes suivants :

Problème 1

Considérez le scénario suivant :
  • Vous avez installé le Kit de développement Microsoft Azure et les outils Windows Azure pour Visual Studio de Microsoft.
  • Vous créez un projet de Service Web en nuage et que vous ajoutez un service Windows Communication Foundation (WCF) pour le projet.
  • Vous déboguez le projet dans le fabric de développement.
  • Vous accédez au document de la définition du langage WSDL (Web Service) du service WCF.
Dans ce scénario, vous remarquez que les URI dans le document WSDL font référence à des instances d’inaccessible site Web interne (http://127.0.0.1:5001/Service.svc?wsdl). Cependant, vous attendez les URI dans le document WSDL pour faire référence à l’équilibreur de charge (http://127.0.0.1:81/Service.svc?wsdl). En outre, lorsque vous essayez d’ajouter une référence au service, vous recevez une notification de défaillance dans la boîte de dialogue Ajouter une référence de Service .

Problème 2

Considérez le scénario suivant :
  • Vous hébergez un service WCF sur une instance derrière un équilibreur de charge.
  • Vous utilisez la commande « Ajouter une référence de Service » ou l’outil de ligne de commande svcutil.exe pour télécharger les métadonnées du service.
Dans ce scénario, lorsque vous essayez de générer un proxy à partir des métadonnées, le processus échoue parce que les métadonnées contiennent les URI instances de référence de ce site Web interne.

Cause

Les problèmes décrits dans la section « Symptômes » se produisent parce que l’équilibreur de charge est accessible de l’extérieur. Toutefois, les instances de site Web interne, situé derrière l’équilibreur de charge ne sont pas accessibles.

Résolution

Remarque Si vous utilisez le.NET Framework 3.5 Service Pack 1 sous Windows 7 ou Windows Server 2008 R2, installez le correctif qui est décrit dans l’article suivant de la base de connaissances Microsoft :
977420 un correctif cumulatif est disponible pour résoudre des problèmes dans Windows Communication Foundation dans.NET Framework 3.5 SP1 pour Windows 7 et Windows Server 2008 R2

Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant ce problème spécifique. Ce correctif va peut-être subir des tests supplémentaires. Par conséquent, si vous n'êtes pas sérieusement concerné par ce problème, nous vous recommandons d'attendre la prochaine mise à jour logicielle qui contiendra ce correctif.

Pour télécharger ce correctif depuis MSDN Code Gallery, visitez le site Web de Microsoft à l’adresse suivante :

Remarque MSDN Code Gallery affiche les langues pour lesquelles ce correctif est disponible. Si vous ne voyez pas votre langue, c'est certainement dû au fait que la page de ressource Code Gallery n'existe pas dans cette langue.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone du Service clientèle et support technique de Microsoft ou pour créer une demande de service distincte, visitez le site Web de Microsoft à l'adresse suivante :

Conditions préalables

Pour appliquer ce correctif, vous devez disposer de.NET Framework 3.5 Service Pack 1 (SP1) ou le.NET Framework 3.0 Service Pack 2 (SP2) installé sur l’un des systèmes d’exploitation suivants :
  • Windows XP
  • Windows Server 2003
  • Le Service Pack 2 de Windows Vista
  • Windows Server 2008 SP2

Remarque Pour une version de Windows 7 ou Windows Server 2008 R2 de ce correctif, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
981002 Un correctif cumulatif est disponible pour Windows Communication Foundation dans le.NET Framework 3.5 SP1 pour Windows 7 et Windows Server 2008 R2

Nécessite un redémarrage

Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué ce correctif.

Informations de remplacement du correctif

Ce correctif ne remplace aucun autre correctif.

Informations sur les fichiers

La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez l’onglet fuseau horaire dans l’élément de Date et heure dans le panneau de configuration.
version de base de x86 pour Windows XP et Windows Server 2003
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Servicemonikersupport.dll3.0.4506.445617,25608-Dec-200923:03x86
Smdiagnostics.dll3.0.4506.4456110,59208-Dec-200923:03x86
System.identitymodel.dll3.0.4506.4456438 27208-Dec-200923:03x86
System.runtime.serialization.dll3.0.4506.4456970,75208-Dec-200923:03x86
System.servicemodel.dll3.0.4506.44565,984,25608-Dec-200923:03x86
System.servicemodel.washosting.dll3.0.4506.445632 76808-Dec-200923:03x86
version de base de x64 pour Windows XP et Windows Server 2003
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Servicemonikersupport.dll3.0.4506.445619,30408-Dec-200922:24x64
Smdiagnostics.dll3.0.4506.445694,20808-Dec-200922:24x64
System.identitymodel.dll3.0.4506.4456397,31208-Dec-200922:24x64
System.runtime.serialization.dll3.0.4506.4456847,87208-Dec-200922:24x64
System.servicemodel.dll3.0.4506.44565,324,80008-Dec-200922:24x64
System.servicemodel.washosting.dll3.0.4506.445632 76808-Dec-200922:24x64
version de base de x86 pour Windows Vista SP2 et Windows Server 2008 SP2
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Servicemonikersupport.dll3.0.4506.414317,24008-Jul-200912:26x86
System.runtime.serialization.dll3.0.4506.4143970,75208-Jul-200912:26x86
System.servicemodel.dll3.0.4506.41435,939,20008-Jul-200912:26x86

version x64 de Windows Vista SP2 et Windows Server 2008 SP2
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Servicemonikersupport.dll3.0.4506.414319,28808-Jul-200912:26x64
System.runtime.serialization.dll3.0.4506.4143847,87208-Jul-200912:26x64
System.servicemodel.dll3.0.4506.41435,275,64808-Jul-200912:26x64

Version Itanium de Windows Server 2008 SP2
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Servicemonikersupport.dll3.0.4506.414333,64008-Jul-200912:27IA-64
System.runtime.serialization.dll3.0.4506.4143847,87208-Jul-200912:26IA-64
System.servicemodel.dll3.0.4506.41435,275,64808-Jul-200912:26IA-64

État

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Plus d'informations

Pour activer le correctif logiciel une fois que vous l’avez installé, vous devez configurer le service WCF pour utiliser le comportement de service suivant :
<serviceBehaviors>   <behavior name="<name>">
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="http" port="81" />
<add scheme="https" port="444" />
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>

Remarque : < nom > est un espace réservé que vous devez remplacer par le nom du comportement de votre service WCF.

Le correctif force WCF générer l’URI à l’aide de l’en-tête de la demande de métadonnées entrant « Hôte » HTTP. Dans ce cas, l’en-tête « Hôte » contient l’adresse d’équilibrage de la charge au lieu de l’adresse de noeud interne.

Si un URI dans le document WSDL contient un modèle autre que le régime de l’en-tête « Hôte » URI, par exemple, si une demande de métadonnées est fourni via le protocole HTTPS mais les métadonnées contiennent les URI HTTP, le correctif devez le numéro de port pour ce jeu différent. Le numéro de port peut être spécifié par le modèle dans la section < defaultPorts >.
Propriétés

ID d'article : 971842 - Dernière mise à jour : 14 janv. 2017 - Révision : 1

Microsoft .NET Framework 3.0, Microsoft .NET Framework 3.0 Service Pack 1, Microsoft .NET Framework 3.0 Service Pack 2

Commentaires