CORRECTIF : Une exception System.NotSupportedException est levée lorsque vous exécutez un IIS hébergé le service WCF qui utilise un certificat client pour l’authentification SSL

S’applique à : .NET Framework 3.5 Service Pack 1

Symptômes


Considérez le scénario suivant :
  • Vous créez un service Windows Communication Foundation (WCF) qui est hébergé dans Internet Information Services (IIS).
  • Vous utilisez la classe WebScriptEnablingBehavior dans le service WCF.
  • Vous configurez le service WCF pour utiliser un certificat client pour l’authentification Secure Sockets Layer (SSL). Pour ce faire, vous définissez la propriété ClientCredentialType dans le fichier Web.config pour le certificat.
Dans ce scénario, lorsque vous exécutez le service WCF, une exception System.NotSupportedException est levée et que vous recevez un message d’erreur semblable au suivant :
Les paramètres SSL pour le service 'None' ne correspond pas à celles de l’IIS « Ssl, SslNegotiateCert, SslRequireCert, SslMapCert, Ssl128 ».

Cause


Ce problème se produit car certaines propriétés de l’instance de HttpTransportBindingElement ne sont pas copiées vers les points de terminaison proxy javascript de généré automatiquement.

Résolution


Un correctif pris en charge est désormais disponible auprès de Microsoft. Toutefois, il est conçu pour résoudre uniquement le problème décrit dans cet article. Il s’applique uniquement aux systèmes rencontrant ce problème spécifique.

Pour résoudre ce problème, contactez les Services de Support technique Microsoft pour obtenir le correctif. Pour obtenir une liste complète des numéros de téléphone des Services de Support technique Microsoft et des informations sur les coûts de support, visitez le site Web de Microsoft à l’adresse suivante :Remarque Dans des cas particuliers, des frais généralement encourus pour les appels au support technique peuvent être annulés si un technicien du support technique Microsoft détermine qu'une mise à jour spécifique peut résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes qui ne relèvent pas de la mise à jour spécifique en question.

Conditions préalables

Vous devez avoir le.NET Framework 3.5 Service Pack 1 (SP1) pour appliquer ce correctif.

Nécessite un redémarrage

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

Informations de remplacement du correctif

Ce correctif ne remplace aucun autre correctif.
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 Server 2000, Windows Server 2003 et Windows XP
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
System.servicemodel.web.dll3.5.594.4152569,34422-Jul-200901:51x86

version de base de x64 pour Windows Server 2000, Windows Server 2003 et Windows XP
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
System.servicemodel.web.dll3.5.594.4152491,52022-Jul-200902:13x64

Itanium et la version de Windows Server 2000, Windows Server 2003 et Windows XP
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
System.servicemodel.web.dll3.5.594.4152491,52022-Jul-200902:26IA-64

État


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

Solution de contournement


Pour contourner ce problème, hébergez vos propres au service WCF au lieu d’héberger le service dans IIS.

Plus d'informations


Informations de vidage de pile

System.ServiceModel.dll!System.ServiceModel.Channels.HttpsChannelListener.ApplyHostedContext(System.ServiceModel.Activation.VirtualPathExtension virtualPathExtension, bool isMetadataListener) + 0x1b7 bytes    

System.ServiceModel.dll!System.ServiceModel.Channels.HttpsTransportBindingElement.BuildChannelListener<System.__Canon>(System.ServiceModel.Channels.BindingContext context) + 0x69 bytes

System.ServiceModel.dll!System.ServiceModel.Channels.BindingContext.BuildInnerChannelListener<System.__Canon>() + 0x5f bytes

System.ServiceModel.dll!System.ServiceModel.Channels.MessageEncodingBindingElement.InternalBuildChannelListener<System.__Canon>(System.ServiceModel.Channels.BindingContext context) + 0x66 bytes

System.ServiceModel.Web.dll!System.ServiceModel.Channels.WebScriptMetadataMessageEncodingBindingElement.BuildChannelListener<System.__Canon>(System.ServiceModel.Channels.BindingContext context) + 0x4b bytes

System.ServiceModel.dll!System.ServiceModel.Channels.BindingContext.BuildInnerChannelListener<System.__Canon>() + 0x5f bytes

System.ServiceModel.dll!System.ServiceModel.Channels.Binding.BuildChannelListener<System.__Canon>(System.Uri listenUriBaseAddress, string listenUriRelativeAddress, System.ServiceModel.Description.ListenUriMode listenUriMode, System.ServiceModel.Channels.BindingParameterCollection parameters) + 0xa6 bytes

System.ServiceModel.dll!System.ServiceModel.Channels.Binding.BuildChannelListener<System.__Canon>(System.Uri listenUriBaseAddress, System.ServiceModel.Channels.BindingParameterCollection parameters) + 0x7c bytes

System.ServiceModel.Web.dll!System.ServiceModel.Description.WebScriptEnablingBehavior.AddMetadataEndpoint(System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher, bool debugMode) + 0x698 bytes

System.ServiceModel.Web.dll!System.ServiceModel.Description.WebScriptEnablingBehavior.ApplyDispatchBehavior(System.ServiceModel.Description.ServiceEndpoint endpoint, System.ServiceModel.Dispatcher.EndpointDispatcher endpointDispatcher) + 0x60 bytes