การแก้ไข: ข้อยกเว้น System.NotSupportedException จะเกิดขึ้นเมื่อคุณเรียกใช้บริการ WCF ที่โฮสต์โดย IIS ที่ใช้ใบรับรองไคลเอ็นต์สําหรับการรับรองความถูกต้องของ SSL

นำไปใช้กับ
.NET Framework 3.5 Service Pack 1

อาการ

ลองทำตามสถานการณ์ต่อไปนี้:

  • คุณสร้างบริการ Windows Communication Foundation (WCF) ที่ถูกโฮสต์ในบริการข้อมูลอินเทอร์เน็ต (IIS)
  • คุณใช้คลาส WebScriptEnablingBehavior ในบริการ WCF
  • คุณกําหนดค่าบริการ WCF ใช้ใบรับรองไคลเอ็นต์สําหรับการรับรองความถูกต้อง Secure Sockets Layer (SSL) เมื่อต้องการทําเช่นนี้ ให้คุณตั้งค่าคุณสมบัติ ClientCredentialType ในไฟล์ Web.config เป็น ใบรับรอง

ในสถานการณ์นี้ เมื่อคุณเรียกใช้บริการ WCF ข้อยกเว้น System.NotSupportedException จะเกิดขึ้น และคุณได้รับข้อความแสดงข้อผิดพลาดที่มีลักษณะต่อไปนี้:

หมายเหตุ

การตั้งค่า SSL สําหรับบริการ 'ไม่มี' ไม่ตรงกับการตั้งค่าของ IIS 'Ssl, SslNegotiateCert, SslRequireCert, SslMapCert, Ssl128'

สาเหตุ

ปัญหานี้เกิดขึ้นเนื่องจากคุณสมบัติบางอย่างของอินสแตนซ์ HttpTransportBindingElement จะไม่ถูกคัดลอกไปยังจุดสิ้นสุดพร็อกซี Javascript ที่สร้างขึ้นโดยอัตโนมัติ

การแก้ปัญหา

โปรแกรมแก้ไขด่วนที่ได้รับการสนับสนุนจาก Microsoft พร้อมใช้งานแล้ว อย่างไรก็ตาม มีไว้เพื่อแก้ไขปัญหาที่อธิบายไว้ในบทความนี้เท่านั้น นําไปใช้กับระบบที่พบปัญหานี้โดยเฉพาะเท่านั้น

เมื่อต้องการแก้ไขปัญหานี้ ให้ติดต่อฝ่ายบริการสนับสนุนลูกค้าของ Microsoft เพื่อขอรับโปรแกรมแก้ไขด่วน สําหรับรายชื่อทั้งหมดของหมายเลขโทรศัพท์ของฝ่ายบริการสนับสนุนลูกค้าของ Microsoft และข้อมูลเกี่ยวกับค่าใช้จ่ายในการสนับสนุน

http://support.microsoft.com/contactus/?ws=support หมายเหตุ ในกรณีพิเศษ อาจมีการยกเลิกค่าใช้จ่ายสําหรับการโทรติดต่อฝ่ายสนับสนุนตามปกติ หากผู้เชี่ยวชาญฝ่ายสนับสนุนของ Microsoft ระบุว่าการอัปเดตเฉพาะจะแก้ไขปัญหาของคุณได้ ค่าใช้จ่ายในการสนับสนุนปกติจะใช้กับคําถามและปัญหาการสนับสนุนเพิ่มเติมที่ไม่มีคุณสมบัติสําหรับการอัปเดตเฉพาะที่สงสัย

ข้อกำหนดเบื้องต้น

คุณต้องติดตั้ง .NET Framework 3.5 Service Pack 1 (SP1) เพื่อใช้โปรแกรมแก้ไขด่วนนี้

ข้อกำหนดในการรีสตาร์ต

คุณไม่จําเป็นต้องเริ่มระบบของคอมพิวเตอร์ใหม่หลังจากที่คุณติดตั้งโปรแกรมแก้ไขด่วน

ข้อมูลการแทนที่โปรแกรมแก้ไขด่วน

โปรแกรมแก้ไขด่วนนี้ไม่มีการแทนที่โปรแกรมแก้ไขด่วนอื่นๆ
  โปรแกรมแก้ไขด่วนรุ่นภาษาอังกฤษนี้มีแอตทริบิวต์ของแฟ้ม (หรือแอตทริบิวต์ของแฟ้มที่ใหม่กว่า) ซึ่งแสดงอยู่ในตารางต่อไปนี้ วันที่และเวลาสำหรับไฟล์เหล่านี้แสดงตามเวลามาตรฐานสากล (UTC) เมื่อคุณดูข้อมูลไฟล์ ข้อมูลจะถูกแปลงเป็นเวลาท้องถิ่น เมื่อต้องการค้นหาความแตกต่างระหว่างเวลา UTC และเวลาท้องถิ่น ให้ใช้แท็บ โซนเวลา ในรายการ วันที่และเวลา ใน แผงควบคุม

เวอร์ชัน x86 สําหรับ Windows Server 2000, Windows Server 2003 และ Windows XP

ชื่อไฟล์ เวอร์ชันของไฟล์ ขนาดไฟล์ วันที่ เวลา แพลตฟอร์ม
System.servicemodel.web.dll 3.5.594.4152 569,344 22-ก.ค. 2552 01:51 x86

              

เวอร์ชัน x64 สําหรับ Windows Server 2000, Windows Server 2003 และ Windows XP

ชื่อไฟล์ เวอร์ชันของไฟล์ ขนาดไฟล์ วันที่ เวลา แพลตฟอร์ม
System.servicemodel.web.dll 3.5.594.4152 491,520 22-ก.ค. 2552 02:13 x64

              

เวอร์ชันที่ใช้ Itanium สําหรับ Windows Server 2000, Windows Server 2003 และ Windows XP

ชื่อไฟล์ เวอร์ชันของไฟล์ ขนาดไฟล์ วันที่ เวลา แพลตฟอร์ม
System.servicemodel.web.dll 3.5.594.4152 491,520 22-ก.ค. 2552 02:26 IA-64

              

สถานะ

Microsoft ได้ยืนยันว่านี่เป็นปัญหาที่เกิดขึ้นกับผลิตภัณฑ์ของ Microsoft ที่แสดงไว้ในส่วน "นำไปใช้กับ"

วิธีแก้ไขปัญหาชั่วคราว

เมื่อต้องการแก้ไขปัญหานี้ชั่วคราว ให้โฮสต์บริการ WCF ด้วยตนเองแทนการโฮสต์บริการใน IIS

ข้อมูลเพิ่มเติม

ข้อมูลบันทึกข้อมูลกองซ้อน

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