DÜZELTME: SSL kimlik doğrulaması için istemci sertifikası kullanan IIS tarafından barındırılan bir WCF hizmetini çalıştırdığınızda System.NotSupportedException özel durumu oluşuyor

Uygulandığı Öğe
.NET Framework 3.5 Service Pack 1

Belirtiler

Aşağıdaki senaryoyu ele alalım:

  • Internet Information Services'ta (IIS) barındırılan bir Windows Communication Foundation (WCF) hizmeti oluşturursunuz.
  • WCF hizmetinde WebScriptEnablingBehavior sınıfını kullanırsınız.
  • WCF hizmetini, Güvenli Yuva Katmanı (SSL) kimlik doğrulaması için bir istemci sertifikası kullanacak şekilde yapılandırırsınız. Bunu yapmak için, Web.config dosyasındaki ClientCredentialType özelliğini Sertifika olarak ayarlarsınız.

Bu senaryoda, WCF hizmetini çalıştırdığınızda System.NotSupportedException özel durumu oluşturulur ve aşağıdakine benzer bir hata iletisi alırsınız:

Not

'Yok' hizmeti için SSL ayarları IIS 'Ssl, SslNegotiateCert, SslRequireCert, SslMapCert, Ssl128' ayarları ile eşleşmiyor.

Neden

Bu sorun, HttpTransportBindingElement örneğinin bazı özellikleri otomatik olarak oluşturulan javascript ara sunucu uç noktalarına kopyalanmadığı için oluşur.

Çözüm

Artık Microsoft, desteklenen bir düzeltme sunmaktadır. Ancak, yalnızca bu makalede açıklanan sorunu düzeltmeye yöneliktir. Bunu yalnızca bu özel sorunun yaşandığı sistemlere uygulayın.

Bu sorunu gidermek için, Microsoft Müşteri Destek Hizmetleri'ne başvurarak düzeltmeyi edinin. Microsoft Müşteri Destek Hizmetleri telefon numaralarının tam listesi ve destek ücretleri hakkında bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:

http://support.microsoft.com/contactus/?ws=support Not Özel durumlarda, bir Microsoft Desteği uzmanı belirli bir güncelleştirmenin sorunu çözeceğini belirlerse, normalde destek aramaları için yapılan ücretler iptal edilebilir. Ek destek soruları ve söz konusu güncelleştirme için uygun olmayan sorunlara normal destek ücretleri uygulanır.

Önkoşullar

Bu düzeltmeyi uygulamak için .NET Framework.NET Framework 3.5 Service Pack 1 (SP1) yüklü olmalıdır.

Yeniden başlatma gereksinimi

Düzeltmeyi yükledikten sonra bilgisayarı yeniden başlatmanız gerekmez.

Düzeltme değiştirme bilgileri

Bu düzeltme diğer düzeltmelerin yerine geçmez.
  Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya öznitelikleri) sahiptir. Bu dosyaların tarihleri ve saatleri Eşgüdümlü Evrensel Saat'te (UTC) listelenmiştir. Dosya bilgilerini görüntülediğinizde yerel saate dönüştürülür. UTC ile yerel saat arasındaki farkı bulmak için Denetim Masası'deki Tarih ve Saat öğesinde Saat Dilimi sekmesini kullanın.

Windows Server 2000, Windows Server 2003 ve Windows XP için x86 tabanlı sürüm

Dosya adı Dosya sürümü Dosya boyutu Tarih Saat Platform
System.servicemodel.web.dll 3.5.594.4152 569,344 22 Tem 2009 01:51 x86

              

Windows Server 2000, Windows Server 2003 ve Windows XP için x64 tabanlı sürüm

Dosya adı Dosya sürümü Dosya boyutu Tarih Saat Platform
System.servicemodel.web.dll 3.5.594.4152 491,520 22 Tem 2009 02:13 x64

              

Windows Server 2000, Windows Server 2003 ve Windows XP için Itanium tabanlı sürüm

Dosya adı Dosya sürümü Dosya boyutu Tarih Saat Platform
System.servicemodel.web.dll 3.5.594.4152 491,520 22 Tem 2009 02:26 IA-64 Serisi

              

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.

Geçici çözüm

Bu soruna geçici bir çözüm bulmak için, hizmeti IIS'de barındırmak yerine WCF hizmetini kendiniz barındırın.

Daha Fazla Bilgi

Yığın dökümü bilgileri

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