LØSNING: En hurtigreparasjon som gjør det mulig for WCF å sende sikrede meldinger og motta usikrede svar, og å sende usikrede meldinger og motta sikre svar, er tilgjengelig for .NET Framework 3.5 SP1

Gjelder for
.NET Framework 3.5 Service Pack 1

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