Sintomas
Considere o seguinte cenário:
-
Criar um serviço Windows Communication Foundation (WCF) que é hospedado no Internet Information Services (IIS).
-
Você pode usar a classe WebScriptEnablingBehavior no serviço do WCF.
-
Configurar o serviço do WCF para usar um certificado de cliente para autenticação Secure Sockets Layer (SSL). Para fazer isso, defina a propriedade ClientCredentialType no arquivo Web. config para o certificado.
Nesse cenário, quando você executar o serviço do WCF, uma exceção System.NotSupportedException é lançada e você receber uma mensagem de erro semelhante à seguinte:
As configurações de SSL para o serviço 'Nenhum' não correspondem do IIS 'Ssl, SslNegotiateCert, SslRequireCert, SslMapCert, Ssl128'.
Causa
Esse problema ocorre porque algumas propriedades da instância de HttpTransportBindingElement não são copiadas para os pontos de extremidade de proxy javascript gerada automaticamente.
Resolução
Um hotfix suportado está disponível agora na Microsoft. No entanto, destina-se a corrigir somente o problema descrito neste artigo. Aplique-o somente aos sistemas que apresentarem esse problema específico.
Para resolver esse problema, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa dos números de telefone do Serviço de Atendimento ao Cliente Microsoft e informações sobre custos de suporte, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportObservação: em alguns casos, as taxas cobradas para chamadas de suporte podem ser canceladas caso um profissional de Suporte da Microsoft determine que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados para questões de suporte adicionais e problemas que não se qualificam à atualização específica em questão.
Pré-requisitos:
Você deve ter o.NET Framework 3.5 Service Pack 1 (SP1) instalado para aplicar esse hotfix.
Requisitos de reinicialização:
Você não precisa reiniciar o computador após instalar o hotfix.
Informações de substituição do hotfix:
Esse hotfix não substitui outros hotfixes.
A versão em inglês deste hotfix possui os atributos de arquivo (ou atributos de arquivo posteriores) listados na tabela a seguir. As datas e horas desses arquivos estão listadas na Hora Universal Coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para localizar a diferença entre o UTC e a hora local, use a guia Fuso Horário no item Data e Hora no Painel de Controle.
versão baseada em x86 para Windows Server 2000, Windows Server 2003 e Windows XP
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
System.servicemodel.web.dll |
3.5.594.4152 |
569,344 |
22-Jul-2009 |
01:51 |
x86 |
versão baseada em x64 para Windows Server 2000, Windows Server 2003 e Windows XP
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
System.servicemodel.web.dll |
3.5.594.4152 |
491,520 |
22-Jul-2009 |
02:13 |
x64 |
Versão baseada em Itanium para Windows Server 2000, Windows Server 2003 e Windows XP
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
System.servicemodel.web.dll |
3.5.594.4152 |
491,520 |
22-Jul-2009 |
02:26 |
IA-64 |
Status
A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".
Solução alternativa
Para contornar esse problema, hospede internamente o serviço WCF em vez de hospedar o serviço no IIS.
Mais informações
Informações de despejo de pilha
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