Vorgehensweise: Konfigurieren von WCF-Diensten für die Zusammenarbeit mit WSE3.0-ClientsHow to: Configure WCF Services to Interoperate with WSE 3.0 Clients

Windows Communication Foundation (WCF)-Dienste sind auf Transportebene mit Web Services Enhancements 3.0 für Microsoft .NET (WSE)-Clients kompatibel, wenn WCF-Dienste konfiguriert sind, verwenden Sie die Version vom August 2004 des WS-Addressing-Spezifikation.Windows Communication Foundation (WCF) services are wire-level compatible with Web Services Enhancements 3.0 for Microsoft .NET (WSE) clients when WCF services are configured to use the August 2004 version of the WS-Addressing specification.

So konfigurieren Sie einen WCF-Dienst für die Zusammenarbeit mit WSE3.0-ClientsTo enable a WCF service to interoperate with WSE 3.0 clients

  1. Definieren Sie eine benutzerdefinierte Bindung für den WCF-Dienst.Define a custom binding for the WCF service.

    Es muss eine benutzerdefinierte Bindung erstellt werden, um anzugeben, dass die Version der WS-Adressierungsspezifikation vom August 2004 für die Nachrichtencodierung verwendet wird.To specify that the August 2004 version of the WS-Addressing specification is used for message encoding, a custom binding must be created.

    1. Fügen Sie ein untergeordnetes <CustomBinding > auf die <Bindungen > der Konfigurationsdatei des Diensts.Add a child <customBinding> to the <bindings> of the service's configuration file.

    2. Geben Sie einen Namen für die Bindung, die durch Hinzufügen einer <Bindung > auf die <CustomBinding > verwendet wird und die name Attribut.Specify a name for the binding, by adding a <binding> to the <customBinding> and setting the name attribute.

    3. Geben Sie einen Authentifizierungsmodus und die Version der WS-Security-Spezifikationen, die verwendet werden, um Nachrichten zu sichern, die mit WSE 3.0 kompatibel sind, indem Sie ein untergeordnetes Element hinzufügen <Sicherheit > auf die <binden >.Specify an authentication mode and the version of the WS-Security specifications that are used to secure messages that are compatible with WSE 3.0, by adding a child <security> to the <binding>.

      Legen den Authentifizierungsmodus, zum Festlegen der authenicationMode Attribut von der <Sicherheit >.To set the authentication mode, set the authenicationMode attribute of the <security>. Ein Authentifizierungsmodus ist mit einer sofort verwendbaren WSE 3.0-Sicherheitsassertion vergleichbar.An authentication mode is roughly equivalent to a turnkey security assertion in WSE 3.0. Die folgende Tabelle ordnet Authentifizierungsmodi in WCF Sicherheitsassertionen in WSE 3.0.The following table maps authentication modes in WCF to turnkey security assertions in WSE 3.0.

      WCF-AuthentifizierungsmodusWCF Authentication Mode Sofort verwendbare WSE 3.0-SicherheitsassertionWSE 3.0 turnkey security assertion
      AnonymousForCertificate anonymousForCertificateSecurity
      Kerberos kerberosSecurity
      MutualCertificate mutualCertificate10Security*
      MutualCertificate mutualCertificate11Security*
      UserNameOverTransport usernameOverTransportSecurity
      UserNameForCertificate usernameForCertificateSecurity

      * Einer der Hauptunterschiede zwischen den mutualCertificate10Security und mutualCertificate11Security Sicherheitsassertionen ist die Version der WS-Security-Spezifikation, die WSE zum Sichern der SOAP-Nachrichten verwendet.* One of the primary differences between the mutualCertificate10Security and mutualCertificate11Security turnkey security assertions is the version of the WS-Security specification that WSE uses to secure the SOAP messages. Für mutualCertificate10Security wird WS-Security 1.0 verwendet, wohingegen WS-Security 1.1 für mutualCertificate11Security verwendet wird.For mutualCertificate10Security, WS-Security 1.0 is used, whereas WS-Security 1.1 is used for mutualCertificate11Security. Für WCF-Version der WS-Security-Spezifikation wird angegeben, der messageSecurityVersion Attribut von der <Sicherheit >.For WCF, the version of the WS-Security specification is specified in the messageSecurityVersion attribute of the <security>.

      Um die Version der WS-Security-Spezifikation festgelegt, die zum Sichern von SOAP-Nachrichten verwendet wird, legen Sie die messageSecurityVersion Attribut von der <Sicherheit >.To set the version of the WS-Security specification that is used to secure SOAP messages, set the messageSecurityVersion attribute of the <security>. Für die Zusammenarbeit mit WSE 3.0 legen Sie den Wert des messageSecurityVersion-Attributs auf WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10 fest.To interoperate with WSE 3.0, set the value of the messageSecurityVersion attribute to WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10.

    4. Gibt an, dass die Version vom August 2004 des WS-Addressing-Spezifikation durch Hinzufügen von WCF verwendet wird eine <TextMessageEncoding > und legen Sie die messageVersion auf seinen Wert auf Soap11WSAddressingAugust2004.Specify that the August 2004 version of the WS-Addressing specification is used by WCF by adding a <textMessageEncoding> and set the messageVersion to its value to Soap11WSAddressingAugust2004.

      Hinweis

      Wenn Sie SOAP 1.2 verwenden, legen Sie das messageVersion-Attribut auf Soap12WSAddressingAugust2004 fest.When you are using SOAP 1.2, set the messageVersion attribute to Soap12WSAddressingAugust2004.

  2. Geben Sie an, dass der Dienst die benutzerdefinierte Bindung verwendet.Specify that the service uses the custom binding.

    1. Legen Sie die binding Attribut des der <Endpunkt > Element customBinding.Set the binding attribute of the <endpoint> element to customBinding.

    2. Festlegen der bindingConfiguration Attribut des der <Endpunkt > Element im angegebenen Wert der name Attribut des der <Bindung > für das benutzerdefinierte die Bindung.Set the bindingConfiguration attribute of the <endpoint> element to the value specified in the name attribute of the <binding> for the custom binding.

BeispielExample

Das folgende Codebeispiel gibt an, dass Service.HelloWorldService eine benutzerdefinierte Bindung zur Zusammenarbeit mit WSE 3.0-Clients verwendet.The following code example specifies that the Service.HelloWorldService uses a custom binding to interoperate with WSE 3.0 clients. Die benutzerdefinierte Bindung gibt an, dass die Version der WS-Adressierungsspezifikation vom August 2004 und die Spezifikationen von WS-Security 1.1 zum Codieren der ausgetauschten Nachrichten verwendet werden.The custom binding specifies that the August 2004 version of the WS-Addressing and the WS-Security 1.1 set of specifications are used to encode the exchanged messages. Die Nachrichten werden mit dem AnonymousForCertificate-Authentifizierungsmodus geschützt.The messages are secured using the AnonymousForCertificate authentication mode.

<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>  

Siehe auchSee Also

Vorgehensweise: Anpassen einer vom System bereitgestellten BindungHow to: Customize a System-Provided Binding