REMEDIERE: O excepție System.NotSupportedException apare atunci când rulați un serviciu WCF găzduit de IIS care utilizează un certificat client pentru autentificarea SSL

Se aplică la
.NET Framework 3.5 Service Pack 1

Simptome

Luați în considerare următorul scenariu:

  • Creați un serviciu Windows Communication Foundation (WCF) care este găzduit în Internet Information Services (IIS).
  • Utilizați clasa WebScriptEnablingBehavior în serviciul WCF.
  • Configurați serviciul WCF să utilizeze un certificat client pentru autentificarea Secure Sockets Layer (SSL). Pentru a face acest lucru, setați proprietatea ClientCredentialType din fișierul Web.config la Certificat.

În acest scenariu, atunci când rulați serviciul WCF, este generată o excepție System.NotSupportedException și primiți un mesaj de eroare care seamănă cu următorul:

Notă

Setările SSL pentru serviciul "None" nu se potrivesc cu cele ale IIS "Ssl, SslNegotiateCert, SslRequireCert, SslMapCert, Ssl128".

Cauză

Această problemă apare deoarece unele proprietăți ale instanței HttpTransportBindingElement nu sunt copiate în punctele finale proxy javascript generate automat.

Rezolvare

O remediere rapidă acceptată este acum disponibilă de la Microsoft. Cu toate acestea, ea este menită să corecteze doar problema descrisă în acest articol. Aplicați-o doar sistemelor care se confruntă cu această problemă specifică.

Pentru a rezolva această problemă, contactați Serviciile de asistență clienți Microsoft pentru a obține remedierea rapidă. Pentru o listă completă a numerelor de telefon ale Serviciilor de asistență pentru clienții Microsoft și informații despre costurile de asistență, vizitați următorul site web Microsoft:

http://support.microsoft.com/contactus/?ws=support Notă În cazuri speciale, costurile implicate de obicei pentru apelurile de asistență pot fi revocate dacă un specialist de la Asistență Microsoft stabilește că o anumită actualizare va rezolva problema. Costurile uzuale de suport se vor aplica pentru întrebări suplimentare de suport și pentru probleme ce nu fac obiectul actualizării în chestiune.

Cerințe preliminare

Trebuie să aveți .NET Framework 3.5 Service Pack 1 (SP1) instalat pentru a aplica această remediere rapidă.

Cerința de repornire

Nu este necesar să reporniți computerul după ce instalați remedierea rapidă.

Informații despre înlocuirea remedierii rapide

Această remediere rapidă nu înlocuiește alte remedieri rapide.
  Versiunea în limba engleză a acestei remedieri rapide are atributele de fișier (sau atributele de fișier mai recente) listate în tabelul următor. Datele și orele pentru aceste fișiere sunt listate în UTC. Când vizualizați informațiile despre fișier, acestea sunt convertite la ora locală. Pentru a găsi diferența dintre UTC și ora locală, utilizați fila Fus orar din elementul Dată și oră din Panou de control.

versiune x86 pentru Windows Server 2000, Windows Server 2003 și Windows XP

Nume fișier Versiune de fișier Dimensiune fișier Dată Oră Platformă
System.servicemodel.web.dll 3.5.594.4152 569,344 22-Iul-2009 01:51 x86

              

versiune x64 pentru Windows Server 2000, Windows Server 2003 și Windows XP

Nume fișier Versiune de fișier Dimensiune fișier Dată Oră Platformă
System.servicemodel.web.dll 3.5.594.4152 491,520 22-Iul-2009 02:13 x64

              

Versiune Itanium pentru Windows Server 2000, Windows Server 2003 și Windows XP

Nume fișier Versiune de fișier Dimensiune fișier Dată Oră Platformă
System.servicemodel.web.dll 3.5.594.4152 491,520 22-Iul-2009 02:26 IA-64

              

Stare

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft care sunt listate în secțiunea „Se aplică la”.

Soluție

Pentru a evita această problemă, găzduiți singur serviciul WCF, nu găzduiți serviciul în IIS.

Mai multe informații

Stack dump information

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