修复︰ System.NotSupportedException 时引发异常运行 IIS 承载 WCF 服务的使用 SSL 身份验证的客户端证书

症状

请考虑以下情形:

  • 创建承载 Windows 通讯基础 (WCF) 服务在 Internet Information Services (IIS)。

  • 在 WCF 服务中使用WebScriptEnablingBehavior类。

  • 配置 WCF 服务来使用安全套接字层 (SSL) 身份验证的客户端证书。若要执行此操作,您设置ClientCredentialType属性证书的 Web.config 文件中。

在这种情况下,当运行 WCF 服务, System.NotSupportedException异常时,您会收到一条错误消息,如下所示︰

SSL 设置服务的无与不匹配的 IIS Ssl、 SslNegotiateCert、 SslRequireCert、 SslMapCert、 Ssl128'。

原因

发生此问题是因为HttpTransportBindingElement实例的某些属性未复制到自动生成 javascript 代理终结点。

解决方案

受支持的修补程序现已从 Microsoft 推出。但是,它旨在纠正本文介绍的问题。它仅应用于正经历此特定问题的系统。

若要解决此问题,请联系 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-Jul-2009

01:51

x86


基于 x64 的 Windows Server 2000、 Windows Server 2003 和 Windows XP 版本

文件名称

文件版本

文件大小

日期

时间

平台

System.servicemodel.web.dll

3.5.594.4152

491,520

22-Jul-2009

02:13

x64


基于 Itanium 的 Windows Server 2000、 Windows Server 2003 和 Windows XP 版本

文件名称

文件版本

文件大小

日期

时间

平台

System.servicemodel.web.dll

3.5.594.4152

491,520

22-Jul-2009

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

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×