INTRODUÇÃO
Windows Communication Foundation (WCF) não possui a funcionalidade para enviar mensagens seguras e receber respostas desprotegidas, ou para enviar mensagens não seguras e receber respostas protegidas. O hotfix descrito neste artigo adiciona um novo atributo enableUnsecuredResponse . O valor padrão do atributo enableUnsecuredResponse é false. Se você definir o valor desse atributo como true, os seguintes novos recursos são ativados no WCF:
-
Os clientes do WCF podem aceitar respostas sem segurança mesmo se as mensagens de saída são protegidas usando o protocolo Secure Socket Layer (SSL) para assinar o corpo da mensagem.
-
Os serviços WCF podem enviar respostas desprotegidas com nenhum cabeçalho de segurança em envelopes SOAP, mesmo que a solicitação é protegida.
Observação: O atributo enableUnsecuredResponse só se aplica somente ao tipo CustomBinding .
Resolução
Se você estiver usando o.NET Framework 3.0, instale o hotfix descrito no seguinte artigo da Base de Conhecimento Microsoft:
Corrigir 967105 : respostas não segura um hotfix que permite que o WCF enviar mensagens seguras e receber e enviar mensagens sem segurança e receber respostas protegidas está disponível para o.NET Framework 3.0Se você estiver usando o.NET Framework 3.5 Service Pack 1 no Windows 7 ou Windows Server 2008 R2, instale o hotfix descrito no seguinte artigo da Base de Conhecimento Microsoft:
977420 um pacote cumulativo de hotfix está disponível para corrigir problemas no Windows Communication Foundation no.NET Framework 3.5 SP1 para Windows 7 e Windows Server 2008 R2
Se você estiver usando o.NET Framework 3.5 Service Pack 1 em outros sistemas operacionais, instale o seguinte hotfix para resolver o problema.
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. Esta correção poderá ser submetida a testes adicionais. Portanto, se esse problema não o prejudicar, recomendamos que você aguarde o próximo service pack que contém esse hotfix.
Para resolver esse problema imediatamente, 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:
Para aplicar esse hotfix, você deve ter o.NET Framework 3.5 Service Pack 1.
Requisitos de reinicialização:
Você não precisa reiniciar o computador após aplicar este hotfix se nenhuma instância do.NET Framework está sendo usada.
Informações de substituição do hotfix:
Esse hotfix não substitui outros hotfixes.
Informações sobre o arquivo:
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.
Informações de arquivo para todas as versões baseadas em x86 do Windows Server 2003 e do Windows XP
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01 de junho de 2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01 de junho de 2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01 de junho de 2009 |
22:56 |
x86 |
Informações de arquivo para todas as versões baseadas em x64 do Windows Server 2003 e do Windows XP
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01 de junho de 2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01 de junho de 2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01 de junho de 2009 |
22:28 |
x64 |
Informações de arquivo para todas as versões baseadas em x86 do Windows Vista SP2 e do Windows Server 2008 SP2
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
17,240 |
10-Jun-2009 |
06:55 |
System.runtime.serialization.dll |
3.0.4506.4120 |
970,752 |
10-Jun-2009 |
06:55 |
System.servicemodel.dll |
3.0.4506.4120 |
5,935,104 |
10-Jun-2009 |
06:55 |
Informações de arquivo para todas as versões baseadas em x64 do Windows Vista SP2 e do Windows Server 2008 SP2
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
19,288 |
10-Jun-2009 |
06:56 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
x64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
x64 |
Informações de arquivo para todas as versões baseadas no Itanium do Windows Server 2008 SP2
Nome do Arquivo |
Versão do arquivo |
Tamanho do arquivo |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
33,640 |
10-Jun-2009 |
06:56 |
IA-64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
IA-64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
IA-64 |
Status
A Microsoft confirma que este é um problema em seus produtos listados na seção "Aplica-se a".
Mais informações
Use o exemplo de código a seguir para testar o atributo enableUnsecuredResponse :
Serviço
BindingElementCollection serviceBec = new BindingElementCollection();
SecurityBindingElement serviceSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
serviceSbe.EnableUnsecuredResponse = true;
serviceBec.Add(serviceSbe);
serviceBec.Add(new TextMessageEncodingBindingElement());
serviceBec.Add(new HttpTransportBindingElement());
Binding serviceBinding = new CustomBinding(serviceBec);
ServiceHost serviceHost = new ServiceHost(typeof(RequestReply));
…
serviceHost.Open();
Cliente
BindingElementCollection clientBec = new BindingElementCollection();
SecurityBindingElement clientSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
clientSbe.EnableUnsecuredResponse = true;
clientBec.Add(clientSbe);
clientBec.Add(new TextMessageEncodingBindingElement());
clientBec.Add(new HttpTransportBindingElement());
Binding clientBinding = new CustomBinding(clientBec);
IRequestReply channel = cf.CreateChannel();
try
{
channel.SendString("Hello");
cf.Close();
}