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.0Wenn 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:
http://support.microsoft.com/contactus/?ws=supportHinweis 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
Dateiname |
Dateiversion |
Dateigröße |
Datum |
Zeit |
Plattform |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01 Juni 2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01 Juni 2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01 Juni 2009 |
22:56 |
x86 |
Dateiinformationen für alle X64-basierten Versionen von Windows Server 2003 und Windows XP
Dateiname |
Dateiversion |
Dateigröße |
Datum |
Zeit |
Plattform |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01 Juni 2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01 Juni 2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01 Juni 2009 |
22:28 |
x64 |
Dateiinformationen für alle X86-basierten Versionen von Windows Vista SP2 und Windows Server 2008 SP2
Dateiname |
Dateiversion |
Dateigröße |
Datum |
Zeit |
---|---|---|---|---|
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 |
Dateiinformationen für alle X64-basierten Versionen von Windows Vista SP2 und Windows Server 2008 SP2
Dateiname |
Dateiversion |
Dateigröße |
Datum |
Zeit |
Plattform |
---|---|---|---|---|---|
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 |
Dateiinformationen für alle Itanium-basierten Versionen von Windows Server 2008 SP2
Dateiname |
Dateiversion |
Dateigröße |
Datum |
Zeit |
Plattform |
---|---|---|---|---|---|
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
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();
}