INNLEDNING
WCF (Windows Communication Foundation) har ikke funksjonalitet for å sende sikrede meldinger og deretter motta usikrede svar, eller sende usikrede meldinger og motta sikre svar. Hurtigreparasjonen som beskrives i denne artikkelen, legger til et nytt enableUnsecuredResponse-attributt. Standardverdien for attributtet enableUnsecuredResponse er usann. Hvis du angir verdien for dette attributtet til sann, blir følgende nye funksjoner aktivert i WCF:
- WCF-klienter kan godta usikrede svar selv om utgående meldinger er sikret ved hjelp av SSL-protokollen (Secure Socket Layer) til å signere meldingsteksten.
- WCF-tjenester kan sende usikrede svar som ikke har noe sikkerhetshode i SOAP-konvolutter, selv om forespørselen er sikret.
Obs! Attributtet enableUnsecuredResponse gjelder bare for CustomBinding-typen.
Oppløsning
Hvis du bruker .NET Framework 3.0, installerer du hurtigreparasjonen som beskrives i følgende Microsoft Knowledge Based artikkel:
967105 LØSNING: En hurtigreparasjon som gjør det mulig for WCF å sende sikre meldinger og motta usikrede svar, og sende usikrede meldinger og motta sikre svar, er tilgjengelig for .NET Framework 3.0Hvis du bruker .NET Framework 3.5 Service Pack 1 på Windows 7 eller Windows Server 2008 R2, installerer du hurtigreparasjonen som er beskrevet i følgende Microsoft Knowledge Based artikkel:
977420 En samleoppdatering for hurtigreparasjon er tilgjengelig for å løse problemer i Windows Communication Foundation i .NET Framework 3.5 SP1 for Windows 7 og for Windows Server 2008 R2
Hvis du bruker .NET Framework 3.5 Service Pack 1 på andre operativsystemer, installerer du følgende hurtigreparasjon for å løse problemet.
En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Den er imidlertid bare ment å løse problemet som beskrives i denne artikkelen. Bruk det bare på systemer som har dette bestemte problemet. Denne hurtigreparasjonen kan underkastes ytterligere testing. Derfor anbefaler vi at du venter på neste oppdateringspakke som inneholder denne hurtigreparasjonen, hvis du ikke opplever dette problemet.
Hvis du vil løse dette problemet umiddelbart, kontakter du Microsoft Kundestøtte for å få hurtigreparasjonen. Du finner en fullstendig liste over telefonnumre til Microsoft kundestøtte og informasjon om støttekostnader på følgende Microsoft-webområde:
http://support.microsoft.com/contactus/?ws=support I spesielle tilfeller kan kostnader som vanligvis påløper for kundestøttesamtaler, bli avbrutt hvis en Microsoft Kundestøtte-representant finner ut at en bestemt oppdatering vil løse problemet. De vanlige støttekostnadene gjelder for flere kundestøttespørsmål og problemer som ikke kvalifiserer for den aktuelle oppdateringen.
Forutsetninger
Hvis du vil bruke denne hurtigreparasjonen, må du ha .NET Framework 3.5 Service Pack 1.
Behov for omstart
Du trenger ikke å starte datamaskinen på nytt etter at du har installert denne hurtigreparasjonen hvis ingen forekomster av .NET Framework brukes.
Informasjon om erstatning av hurtigreparasjon
Denne hurtigreparasjonen erstatter ikke andre hurtigreparasjoner.
Filinformasjon
Den engelske versjonen av denne hurtigreparasjonen har filattributtene (eller nyere filattributter) som er oppført i tabellen nedenfor. Datoene og klokkeslettene for disse filene er oppført i Coordinated Universal Time (UTC). Når du viser filinformasjonen, konverteres den til lokal tid. Hvis du vil finne forskjellen mellom UTC og lokal tid, bruker du Tidssone-fanen i dato- og klokkeslettelementet i Kontrollpanel.
Filinformasjon for alle x86-baserte versjoner av Windows Server 2003 og Windows XP
| Filnavn | Filversjon | Filstørrelse | Dato | Klokkeslett | 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 |
Filinformasjon for alle x64-baserte versjoner av Windows Server 2003 og Windows XP
| Filnavn | Filversjon | Filstørrelse | Dato | Klokkeslett | 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 |
Filinformasjon for alle x86-baserte versjoner av Windows Vista SP2 og Windows Server 2008 SP2
| Filnavn | Filversjon | Filstørrelse | Dato | Klokkeslett |
|---|---|---|---|---|
| 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 |
Filinformasjon for alle x64-baserte versjoner av Windows Vista SP2 og Windows Server 2008 SP2
| Filnavn | Filversjon | Filstørrelse | Dato | Klokkeslett | 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 |
Filinformasjon for alle Itanium-baserte versjoner av Windows Server 2008 SP2
| Filnavn | Filversjon | Filstørrelse | Dato | Klokkeslett | 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 bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen «Gjelder for».
Mer informasjon
Bruk følgende eksempelkode til å teste attributtet enableUnsecuredResponse:
Tjeneste
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();
Klient
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();
}