Khắc phục: Ngoại lệ System.NotSupportedException ném khi bạn chạy một IIS DV WCF sử dụng chứng chỉ máy khách xác thực SSL

Áp dụng cho: .NET Framework 3.5 Service Pack 1

Triệu chứng


Xem xét tình huống sau:
  • Bạn tạo một dịch vụ Windows Communication Foundation (WCF) được lưu trữ trong dịch vụ thông tin Internet (IIS).
  • Bạn sử dụng lớp WebScriptEnablingBehavior trong dịch vụ WCF.
  • Bạn cấu hình dịch vụ WCF sử dụng chứng chỉ máy khách xác thực Secure Socket Layer (SSL). Để thực hiện việc này, bạn đặt thuộc tính ClientCredentialType trong tệp Web.config chứng chỉ.
Trong trường hợp này, khi bạn chạy dịch vụ WCF, ngoại lệ System.NotSupportedException và bạn nhận được thông báo lỗi có giống như sau:
Thiết lập SSL cho dịch vụ 'None' không khớp với những IIS 'Ssl, SslNegotiateCert, SslRequireCert, SslMapCert, Ssl128'.

Nguyên nhân


Sự cố này xảy ra do một số thuộc tính của phiên bản HttpTransportBindingElement không được sao chép vào điểm cuối proxy javascript tự động tạo ra.

Giải pháp


Microsoft hiện đã cung cấp bản cập nhật nóng được hỗ trợ. Tuy nhiên, nó là nhằm khắc phục chỉ sự cố mà bài viết này mô tả. Áp dụng cho các hệ thống đang gặp sự cố cụ thể này.

Để khắc phục sự cố này, hãy liên hệ với dịch vụ hỗ trợ khách hàng Microsoft để lấy hotfix. Để biết danh sách đầy đủ số điện thoại Dịch vụ hỗ trợ khách hàng của Microsoft và thông tin về chi phí hỗ trợ, ghé thăm Web site sau của Microsoft:Lưu ý Trong trường hợp đặc biệt, chi phí thường phát sinh cho cuộc gọi hỗ trợ có thể bị hủy bỏ nếu chuyên viên hỗ trợ Microsoft xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề của bạn. Chi phí hỗ trợ thông thường sẽ áp dụng cho các vấn đề không phù hợp với bản Cập Nhật cụ thể trong câu hỏi và câu hỏi hỗ trợ bổ sung.

Điều kiện tiên quyết

Bạn phải có các .NET Framework 3.5 gói dịch vụ 1 (SP1) được cài đặt để áp dụng hotfix này.

Yêu cầu khởi động lại

Bạn không phải khởi động lại máy tính sau khi bạn cài đặt hotfix.

Thông tin thay thế cập nhật nóng

Hotfix này không thay thế bất kỳ hotfix nào khác.
Phiên bản tiếng Anh của cập nhật nóng này có các thuộc tính tệp (hoặc thuộc tính tệp mới hơn) được liệt kê trong bảng sau. Ngày và giờ của các tệp này được liệt kê theo Giờ Quốc tế Phối hợp (UTC). Khi bạn xem thông tin về tệp, ngày và giờ được chuyển đổi thành giờ địa phương. Để tìm sự khác nhau giữa UTC và giờ địa phương, sử dụng tab Múi Giờ trong mục Ngày và Giờ trong Pa-nen điều khiển.
x86 dựa trên phiên bản Windows Server 2000, Windows Server 2003 và Windows XP
Tên tệpPhiên bản tệpKích thước tệpNgàyGiờNền tảng
System.servicemodel.web.dll3.5.594.4152569,34422-Jul-200901:51x86

x64 dựa trên phiên bản Windows Server 2000, Windows Server 2003 và Windows XP
Tên tệpPhiên bản tệpKích thước tệpNgàyGiờNền tảng
System.servicemodel.web.dll3.5.594.4152491,52022-Jul-200902:13x64

Phiên bản dựa vào Itanium cho Windows Server 2000, Windows Server 2003 và Windows XP
Tên tệpPhiên bản tệpKích thước tệpNgàyGiờNền tảng
System.servicemodel.web.dll3.5.594.4152491,52022-Jul-200902:26IA-64

Trạng thái


Microsoft đã xác nhận rằng đây là sự cố trong sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".

Giải pháp


Để khắc phục sự cố này, tự lưu trữ dịch vụ WCF thay vì lưu trữ dịch vụ IIS.

Thông tin


Ngăn xếp kết xuất thông tin

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