Introduktion
Windows Communication Foundation (WCF) har inte funktioner för att skicka säkra meddelanden och ta emot osäker svar eller för att skicka osäker meddelanden och ta emot säkra svar. Snabbkorrigeringen som beskrivs i den här artikeln lägger till attributet enableUnsecuredResponse . Standardvärdet för attributet enableUnsecuredResponse är false. Om du anger värdet för det här attributet till trueaktiveras följande nya funktioner i WCF:
-
WCF-klienter kan acceptera osäker svar även om utgående meddelanden är skyddade med hjälp av Secure Socket Layer (SSL)-protokollet för att signera meddelandet.
-
WCF-tjänster kan skicka osäker svar som har inga säkerhetshuvud i SOAP-kuvert, även om begäran är skyddad.
Obs! Attributet enableUnsecuredResponse gäller endast endast typen CustomBinding .
Lösning
Om du använder.NET Framework 3.0 kan du installera snabbkorrigeringen som beskrivs i följande artikel i Microsoft Knowledge baserade:
967105 KORRIGERA: en snabbkorrigering som gör WCF skicka säkra meddelanden och ta emot oskyddad svar och skicka osäker meddelanden och ta emot säkra svar finns för.NET Framework 3.0Om du använder.NET Framework 3.5 Service Pack 1 på Windows 7 eller Windows Server 2008 R2, installerar du snabbkorrigeringen som beskrivs i följande artikel i Microsoft Knowledge baserade:
977420 en snabbkorrigering är tillgänglig för att lösa problem i Windows Communication Foundation på.NET Framework 3.5 SP1 för Windows 7 och Windows Server 2008 R2
Om du använder.NET Framework 3.5 Service Pack 1 i andra operativsystem installerar du följande snabbkorrigering som löser problemet.
En snabbkorrigering är nu tillgänglig från Microsoft. Den är emellertid avsedd att åtgärda det problem som beskrivs i denna artikel. Använd den bara på datorer där detta problem uppstår. Snabbkorrigeringen kan komma att testas igen. Om inte störs alltför mycket av detta problem rekommenderar vi att du väntar på Nästa service pack som innehåller den här snabbkorrigeringen.
Om du vill lösa problemet omedelbart kontaktar du Microsoft support för att få snabbkorrigeringen. En fullständig lista över telefonnummer till Microsoft Customer Support Services och information om supportkostnader finns på följande Microsoft-webbplats:
http://support.microsoft.com/contactus/?ws=supportObs! I särskilda fall avbryts de avgifter som är normala för supportsamtal om en supporttekniker anser att en särskild uppdatering kan lösa ditt problem. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte berör den särskilda uppdateringen.
Förutsättningar
Om du vill installera den här snabbkorrigeringen måste du ha.NET Framework 3.5 Service Pack 1.
Krav på omstart
Du behöver inte starta om datorn när du har installerat den här snabbkorrigeringen om ingen instans av.NET Framework som används.
Ersättningsinformation för Hotfix
Den här snabbkorrigeringen ersätter inte några andra snabbkorrigeringar.
Filinformation
Den engelska versionen av den här snabbkorrigeringen har de filattribut (eller senare filattribut) som visas i följande tabell. Datum och tider för dessa filer anges i UTC-tid (UTC). När du visar filinformationen konverteras den till lokal tid. Använd fliken tidszon i datum och tid på Kontrollpanelen om du vill se skillnaden mellan UTC-tid och lokal tid.
Filinformation för alla x86-baserade versioner av Windows Server 2003 och Windows XP
Filnamn |
Filversion |
Storlek |
Datum |
Tid |
Plattform |
---|---|---|---|---|---|
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 |
Filinformation för alla x64-baserade versioner av Windows Server 2003 och Windows XP
Filnamn |
Filversion |
Storlek |
Datum |
Tid |
Plattform |
---|---|---|---|---|---|
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 |
Filinformation för alla x86-baserade versioner av Windows Vista SP2 och Windows Server 2008 SP2
Filnamn |
Filversion |
Storlek |
Datum |
Tid |
---|---|---|---|---|
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 |
Filinformation för alla x64-baserade versioner av Windows Vista SP2 och Windows Server 2008 SP2
Filnamn |
Filversion |
Storlek |
Datum |
Tid |
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 |
Filinformation för alla Itanium-baserade versioner av Windows Server 2008 SP2
Filnamn |
Filversion |
Storlek |
Datum |
Tid |
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 har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".
Mer Information
Du kan använda följande exempelkod för att testa enableUnsecuredResponse attribut:
Service
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();
Klienten
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();
}