INTRODUÇÃO
Windows Communication Foundation (WCF) não tem a funcionalidade para enviar mensagens seguras e, em seguida, receber respostas não seguras, ou para enviar mensagens não seguras e receber respostas seguras. A correcção descrita neste artigo adiciona um novo atributo enableUnsecuredResponse . O valor predefinido do atributo enableUnsecuredResponse é Falso. Se definir o valor deste atributo como true, as seguintes novas funcionalidades estão activadas no WCF:
-
Os clientes WCF podem aceitar respostas não seguras, mesmo que as mensagens a enviar são seguras, utilizando o protocolo Secure Socket Layer (SSL) para assinar o corpo da mensagem.
-
Serviços WCF podem enviar respostas não seguras com nenhum cabeçalho de segurança na SOAP envelopes mesmo se o pedido estiver protegido.
Nota O atributo enableUnsecuredResponse só se aplica apenas ao tipo de CustomBinding .
Resolução
Se estiver a utilizar o .NET Framework 3.0, instale a correcção descrita no seguinte artigo de base de dados de Conhecimento Microsoft:
CORRIGIR 967105 : desprotegida de uma correcção que permite o WCF enviar mensagens seguras e receber respostas e para enviar mensagens não seguras e receber respostas seguras, está disponível para o .NET Framework 3.0Se estiver a utilizar o .NET Framework 3.5 Service Pack 1 no Windows 7 ou Windows Server 2008 R2, instale a correcção descrita no seguinte artigo de base de dados de Conhecimento Microsoft:
977420 um conjunto de correcções está disponível para corrigir problemas no Windows Communication Foundation do .NET Framework 3.5 SP1 para Windows 7. o e para Windows Server 2008 R2
Se estiver a utilizar o .NET Framework 3.5 Service Pack 1 em outros sistemas operativos, instale a correcção seguinte para resolver o problema.
Agora tem uma correcção suportada disponível na Microsoft. Contudo, destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pelo próximo service pack que contenha esta correcção.
Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de normais do suporte serão aplicados a questões de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.
Pré-requisitos
Para aplicar esta correcção tem de ter o .NET Framework 3.5 Service Pack 1.
Requisito de reinício
Não é necessário reiniciar o computador depois de aplicar esta correcção se nenhuma instância do .NET Framework está a ser utilizada.
Informações sobre substituição da correção
Esta correcção não substitui quaisquer outras correcções.
Informações de ficheiro
A versão inglesa desta correcção tem os atributos de ficheiro (ou atributos de ficheiro posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são listadas na hora Universal Coordenada (UTC). Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador Fuso horário no item data e hora no painel de controlo.
Informações de ficheiro para todas as versões baseadas em x86 do Windows Server 2003 e do Windows XP
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01-Jun-2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01-Jun-2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01-Jun-2009 |
22:56 |
x86 |
Informações de ficheiro para todas as versões baseadas em x64 do Windows Server 2003 e do Windows XP
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01-Jun-2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01-Jun-2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01-Jun-2009 |
22:28 |
x64 |
Informações de ficheiro para todas as versões baseadas em x86 do Windows Vista SP2 e do Windows Server 2008 SP2
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 ficheiro para todas as versões baseadas em x64 do Windows Vista SP2 e do Windows Server 2008 SP2
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 ficheiro para todas as versões baseadas em Itanium do Windows Server 2008 SP2
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
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 |
Estado
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na secção "Aplica-se a".
Mais informações
Utilize o seguinte código de exemplo 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();
}