INTRODUZIONE
Windows Communication Foundation (WCF) non dispone di funzionalità per inviare messaggi protetti e ricevere le risposte non protette, o di inviare messaggi non protetti e ricevere risposte protette. L'hotfix descritto in questo articolo viene aggiunto un nuovo attributo enableUnsecuredResponse . Il valore predefinito dell'attributo enableUnsecuredResponse è false. Se si imposta il valore di questo attributo su true, le seguenti nuove funzionalità sono attivate in WCF:
-
Anche se i messaggi in uscita vengono protetti tramite il protocollo Secure Socket Layer (SSL) per firmare il corpo del messaggio, client WCF può accettare le risposte non protette.
-
I servizi WCF possono inviare risposte protette di alcuna intestazione di protezione in SOAP Envelope, anche se la richiesta è protetto.
Nota: L'attributo enableUnsecuredResponse si applica solo al tipo di CustomBinding .
Risoluzione
Se si utilizza la versione.NET Framework 3.0, installare l'hotfix descritto nell'articolo Microsoft Knowledge Base:
967105 FIX: un hotfix che consente a WCF di ricevere messaggi protetti non protette le risposte e di inviare messaggi non protetti e ricevere risposte protette, è disponibile per.NET Framework 3.0Se si utilizza.NET Framework 3.5 Service Pack 1 su Windows 7 o Windows Server 2008 R2, installare l'hotfix descritto nell'articolo Microsoft Knowledge Base:
977420 un hotfix cumulativo è disponibile per risolvere i problemi in Windows Communication Foundation in.NET Framework 3.5 SP1 per Windows 7 e Windows Server 2008 R2
Se si utilizza.NET Framework 3.5 Service Pack 1 su altri sistemi operativi, installare il seguente hotfix per risolvere il problema.
Un hotfix supportato è ora disponibile da Microsoft. Tuttavia è destinato esclusivamente alla risoluzione del problema descritto in questo articolo. Applicarlo solo ai sistemi in cui si verificano questo problema specifico. Questo hotfix potrebbe essere sottoposto ad ulteriori test. Pertanto, se il problema non causa gravi difficoltà, consiglia di attendere la versione successiva del Service pack contenente tale hotfix.
Per risolvere immediatamente questo problema, contattare il supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo dei numeri di telefono supporto tecnico clienti Microsoft e informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota: In casi particolari, le spese normalmente addebitate per le chiamate di supporto potrebbero essere annullate qualora un addetto al supporto Microsoft determina che uno specifico aggiornamento risolverà il problema. I costi di supporto normale verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.
Prerequisiti
Per applicare questo hotfix è necessario disporre di.NET Framework 3.5 Service Pack 1.
Richiesta di riavvio
Non è necessario riavviare il computer dopo avere applicato questo hotfix se non viene utilizzata alcuna istanza di.NET Framework.
Informazioni sulla sostituzione dell'aggiornamento rapido
Questo hotfix non sostituisce eventuali altri aggiornamenti rapidi.
Informazioni sui file
La versione inglese di questo hotfix presenta gli attributi di file (o attributi successivi) elencati nella tabella riportata di seguito. Le date e ore dei file sono elencate in base al formato UTC (Coordinated Universal Time Coordinated). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e ora locale, utilizzare la scheda fuso orario nell'elemento di Data e ora nel Pannello di controllo.
Informazioni file per tutte le versioni basate su x86 di Windows XP e Windows Server 2003
Nome del file |
Versione del file |
Dimensione del file |
Data |
Ora |
Piattaforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01-Giu-2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01-Giu-2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01-Giu-2009 |
22:56 |
x86 |
Informazioni file per tutte le versioni basate su x64 di Windows XP e Windows Server 2003
Nome del file |
Versione del file |
Dimensione del file |
Data |
Ora |
Piattaforma |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01-Giu-2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01-Giu-2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01-Giu-2009 |
22:28 |
x64 |
Informazioni file per tutte le versioni basate su x86 di Windows Server 2008 SP2 e Windows Vista SP2
Nome del file |
Versione del file |
Dimensione del file |
Data |
Ora |
---|---|---|---|---|
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 |
Informazioni file per tutte le versioni basate su x64 di Windows Server 2008 SP2 e Windows Vista SP2
Nome del file |
Versione del file |
Dimensione del file |
Data |
Ora |
Piattaforma |
---|---|---|---|---|---|
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 |
Informazioni sui file per tutte le versioni basate su Itanium di Windows Server 2008 SP2
Nome del file |
Versione del file |
Dimensione del file |
Data |
Ora |
Piattaforma |
---|---|---|---|---|---|
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 |
Stato
Microsoft ha confermato che questo è un problema dei prodotti Microsoft elencati nella sezione "Si applica a".
Ulteriori informazioni
Utilizzare il seguente codice di esempio per verificare l'attributo enableUnsecuredResponse :
Servizio
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();
Client
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();
}