Update: Ist ein WCF-gesicherte Nachrichten senden und unsichere Antworten erhalten und nicht gesicherte Nachrichten senden und gesicherte Antworten, kann Hotfix für.NET Framework 3.5 SP1


Einführung


Windows Communication Foundation (WCF) verfügt nicht über die Funktionalität gesicherte Nachrichten senden und empfangen unsichere Antworten zu unsichere Nachrichten senden und Empfangen von sicheren Antworten. In diesem Artikel beschriebene Hotfix Fügt ein neues EnableUnsecuredResponse -Attribut. Der Standardwert des Attributs EnableUnsecuredResponse ist falsch. Wenn Sie den Wert dieses Attributs auf truefestlegen, werden die folgenden neuen Funktionen in WCF:
  • WCF-Clients akzeptieren unsichere Antworten, selbst wenn ausgehenden Nachrichten mit dem Protokoll Secure Socket Layer (SSL) sich Nachrichtentext geschützt sind.
  • WCF-Dienste können unsichere Antworten senden, die keinen Sicherheitsheader im SOAP-Envelopes, wenn die Anforderung gesichert ist.
Hinweis Das EnableUnsecuredResponse -Attribut nur nur für den Typ CustomBinding .

Problemlösung


Bei Verwendung von.NET Framework 3.0 installieren Sie im folgenden Artikel der Microsoft Knowledge Base beschriebene Hotfix:
967105 beheben: ein Hotfix, der WCF gesicherte Nachrichten senden und empfangen kann unsichere Antworten und unsichere Nachrichten senden und Empfangen von sicheren Antworten steht für.NET Framework 3.0
Wenn Sie.NET Framework 3.5 Service Pack 1 unter Windows 7 oder Windows Server 2008 R2 verwenden, installieren Sie im folgenden Artikel der Microsoft Knowledge Base beschriebene Hotfix:
977420 ist ein Hotfixrollup zur Problembehebung in Windows Communication Foundation in.NET Framework 3.5 SP1 für Windows 7 und Windows Server 2008 R2
Wenn Sie.NET Framework 3.5 Service Pack 1 auf anderen Betriebssystemen verwenden, installieren Sie den folgenden Hotfix zur Behebung des Problems.

Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Es soll jedoch nur das Problem beheben, das in diesem Artikel beschrieben wird. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir, auf das nächste Servicepack warten, das diesen Hotfix enthält.

Wenn dieses Problem sofort beheben möchten, wenden Sie sich an Microsoft Support Services, um den Hotfix zu erhalten. Eine vollständige Liste der Telefonnummern des Microsoft Product Support Services und Informationen zu den Supportkosten finden Sie auf der folgenden Microsoft-Website:Hinweis In bestimmten Fällen können Gebühren, die normalerweise für Support-Anrufe anfallen abgebrochen werden, wenn ein Microsoft-Supportmitarbeiter feststellt, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.

Voraussetzungen

Zum Anwenden dieses Hotfixes müssen Sie.NET Framework 3.5 Service Pack 1.

Neustartanforderung

Sie müssen keinen Neustart des Computers nach der Installation dieses Hotfixes, wenn keine Instanz von.NET Framework verwendet wird.

Informationen zu ersetzten Hotfixes

Dieser Hotfix ersetzt keine anderen Hotfixes.

Dateiinformationen

Die englische Version dieses Hotfixes weist Dateiattribute (oder spätere Attribute), die in der folgenden Tabelle aufgelistet sind. Die Datums- und Uhrzeitangaben für diese Dateien sind in Coordinated Universal Time (UTC) aufgelistet. Wenn Sie die Dateiinformationen anzeigen, werden sie in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu finden, verwenden Sie die Registerkarte Zeitzone unter Datum und Uhrzeit in der Systemsteuerung.
Dateiinformationen für alle X86-basierten Versionen von Windows Server 2003 und Windows XP
DateinameDateiversionDateigrößeDatumZeitPlattform
Servicemonikersupport.dll3.0.4506.411917,24001 Juni 200922:56x86
System.runtime.serialization.dll3.0.4506.4119970,75201 Juni 200922:56x86
System.servicemodel.dll3.0.4506.41195,931,00801 Juni 200922:56x86
Dateiinformationen für alle X64-basierten Versionen von Windows Server 2003 und Windows XP
DateinameDateiversionDateigrößeDatumZeitPlattform
Servicemonikersupport.dll3.0.4506.411919,30401 Juni 200922:28x64
System.runtime.serialization.dll3.0.4506.4119847,87201 Juni 200922:28x64
System.servicemodel.dll3.0.4506.41195,267,45601 Juni 200922:28x64
Dateiinformationen für alle X86-basierten Versionen von Windows Vista SP2 und Windows Server 2008 SP2
DateinameDateiversionDateigrößeDatumZeit
Servicemonikersupport.dll3.0.4506.412017,24010-Jun-200906:55
System.runtime.serialization.dll3.0.4506.4120970,75210-Jun-200906:55
System.servicemodel.dll3.0.4506.41205,935,10410-Jun-200906:55
Dateiinformationen für alle X64-basierten Versionen von Windows Vista SP2 und Windows Server 2008 SP2
DateinameDateiversionDateigrößeDatumZeitPlattform
Servicemonikersupport.dll3.0.4506.412019,28810-Jun-200906:56x64
System.runtime.serialization.dll3.0.4506.4120847,87210-Jun-200906:56x64
System.servicemodel.dll3.0.4506.41205,271,55210-Jun-200906:56x64
Dateiinformationen für alle Itanium-basierten Versionen von Windows Server 2008 SP2
DateinameDateiversionDateigrößeDatumZeitPlattform
Servicemonikersupport.dll3.0.4506.412033,64010-Jun-200906:56IA-64
System.runtime.serialization.dll3.0.4506.4120847,87210-Jun-200906:56IA-64
System.servicemodel.dll3.0.4506.41205,271,55210-Jun-200906:56IA-64

Status


Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Weitere Informationen


Verwenden Sie im folgenden Codebeispiel testen das EnableUnsecuredResponse -Attribut:

Dienst
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();
}