Anvisningar: Konfigurera WCF-tjänster så att de samverkar med WSE 3.0-klienter
WCF-tjänster (Windows Communication Foundation) är kompatibla med Web Services Enhancements 3.0 för Microsoft .NET-klienter (WSE) när WCF-tjänster har konfigurerats för att använda versionen från augusti 2004 av WS-adresseringsspecifikationen.
Så här aktiverar du en WCF-tjänst för att samverka med WSE 3.0-klienter
Definiera en anpassad bindning för WCF-tjänsten.
Om du vill ange att augusti 2004-versionen av WS-Addressing-specifikationen används för meddelandekodning måste en anpassad bindning skapas.
Lägg till en underordnad customBinding> till bindningarna> i tjänstens konfigurationsfil.<<
Ange ett namn för bindningen genom att lägga till en <bindning> i< customBinding> och ange
name
attributet.Ange ett autentiseringsläge och den version av WS-Security-specifikationerna som används för att skydda meddelanden som är kompatibla med WSE 3.0 genom att lägga till en underordnad <säkerhet> i bindningen<>.
Om du vill ange autentiseringsläget anger du
authenticationMode
säkerhetsattributet<>. Ett autentiseringsläge motsvarar ungefär en nyckelfärdig säkerhetskontroll i WSE 3.0. I följande tabell mappas autentiseringslägen i WCF till nyckelfärdiga säkerhetskontroller i WSE 3.0.WCF-autentiseringsläge WSE 3.0 nyckelfärdig säkerhetskontroll AnonymousForCertificate anonymousForCertificateSecurity
Kerberos kerberosSecurity
MutualCertificate mutualCertificate10Security
*MutualCertificate mutualCertificate11Security
*UserNameOverTransport usernameOverTransportSecurity
UserNameForCertificate usernameForCertificateSecurity
* En av de främsta skillnaderna mellan säkerhetskontrollerna
mutualCertificate10Security
ochmutualCertificate11Security
nyckelfärdiga är versionen av WS-Security-specifikationen som WSE använder för att skydda SOAP-meddelandena. FörmutualCertificate10Security
används WS-Security 1.0, medan WS-Security 1.1 används förmutualCertificate11Security
. För WCF anges versionen av WS-Security-specifikationen i säkerhetsattributetmessageSecurityVersion
<>.Ange säkerhetsattributet
messageSecurityVersion
><för att ange den version av WS-Security-specifikationen som används för att skydda SOAP-meddelanden. Om du vill samverka med WSE 3.0 anger du värdet förmessageSecurityVersion
attributet till WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.Ange att augusti 2004-versionen av WS-Addressing-specifikationen används av WCF genom att lägga till en textMessageEncoding> och ange
messageVersion
värdet till Soap11WSAddressingAugust2004.<Kommentar
När du använder SOAP 1.2 anger du
messageVersion
attributet till Soap12WSAddressingAugust2004.
Ange att tjänsten använder den anpassade bindningen.
binding
Ange attributet för slutpunktselementet><till .customBinding
bindingConfiguration
Ange attributet< för slutpunktselementet> till det värde som anges iname
attributet för bindningen>< för den anpassade bindningen.
Exempel
I följande kodexempel anges att Service.HelloWorldService
använder en anpassad bindning för att samverka med WSE 3.0-klienter. Den anpassade bindningen anger att augusti 2004-versionen av WS-Addressing och WS-Security 1.1-uppsättningen specifikationer används för att koda de utväxlade meddelandena. Meddelandena skyddas med autentiseringsläget AnonymousForCertificate .
<configuration>
<system.serviceModel>
<services>
<service
behaviorConfiguration="ServiceBehavior"
name="Service.HelloWorldService">
<endpoint binding="customBinding" address=""
bindingConfiguration="ServiceBinding"
contract="Service.IHelloWorld"></endpoint>
</service>
</services>
<bindings>
<customBinding>
<binding name="ServiceBinding">
<security authenticationMode="AnonymousForCertificate"
messageProtectionOrder="SignBeforeEncrypt"
messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10"
requireDerivedKeys="false">
</security>
<textMessageEncoding messageVersion ="Soap11WSAddressingAugust2004"></textMessageEncoding>
<httpTransport/>
</binding>
</customBinding>
</bindings>
<behaviors>
<behavior name="ServiceBehavior" returnUnknownExceptionsAsFaults="true">
<serviceCredentials>
<serviceCertificate findValue="CN=WCFQuickstartServer" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectDistinguishedName"/>
</serviceCredentials>
</behavior>
</behaviors>
</system.serviceModel>
</configuration>