Erstellen von interoperablen WS-I Basic Profile 1.1-DienstenCreating WS-I Basic Profile 1.1 Interoperable Services

So konfigurieren Sie einen WCF-Dienstendpunkt, um die Interoperabilität mit werden ASP.NETASP.NET -Webdienstclients ist:To configure a WCF service endpoint to be interoperable with ASP.NETASP.NET Web service clients:

  • Verwenden Sie den System.ServiceModel.BasicHttpBinding-Typ als Bindungstyp für den Dienstendpunkt.Use the System.ServiceModel.BasicHttpBinding type as the binding type for your service endpoint.

  • Verwenden Sie für den Dienstendpunkt keine Rückruf- und Sitzungsvertragsfunktionen oder Transaktionsverhalten.Do not use callback and session contract features or transaction behaviors on your service endpoint

Sie können für die Bindung auch Unterstützung für HTTPS und Clientauthentifizierung auf Transportebene aktivieren.You can optionally enable support for HTTPS and transport-level client authentication on the binding.

Die folgenden Funktionen der BasicHttpBinding-Klasse erfordern Funktionalität jenseits von WS-I Basic Profiles 1.1:The following features of the BasicHttpBinding class require functionality beyond WS-I Basic Profile 1.1:

  • MTOM-Meldungscodierung (Message Transmission Optimization Mechanism), die von der BasicHttpBinding.MessageEncoding-Eigenschaft gesteuert wird.Message Transmission Optimization Mechanism (MTOM) message encoding controlled by the BasicHttpBinding.MessageEncoding property. Behalten Sie für diese Eigenschaft den Standardwert bei, der WSMessageEncoding.Text ist, was bedeutet, dass kein MTOM verwendet wird.Leave this property at its default value, which is WSMessageEncoding.Text to not use MTOM.

  • Meldungssicherheit, die vom BasicHttpBinding.Security-Wert gesteuert wird, stellt WS-Sicherheit bereit, die mit WS-I Basic Security Profile 1.0 kompatibel ist.Message security controlled by the BasicHttpBinding.Security value provides WS-Security support compliant with WS-I Basic Security Profile 1.0. Behalten Sie für diese Eigenschaft den Standardwert SecurityMode.Transport bei, d. h. es wird keine WS-Sicherheit verwendet.Leave this property at its default value, which is SecurityMode.Transport to not use WS-Security.

Um die Metadaten für einen WCF-Dienst verfügbar zu machen ASP.NETASP.NET, verwenden Sie die Web-Dienst-Clienttools: Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe), und die Add Web Reference Features in Visual Studio ";" müssen Sie die Veröffentlichung von Metadaten aktivieren.To make the metadata for a WCF service available to ASP.NETASP.NET, use the Web service client generation tools: Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe), and the Add Web Reference feature in Visual Studio; you must enable metadata publication. Weitere Informationen finden Sie unter Veröffentlichen von Metadatenendpunkten.For more information, see Publishing Metadata Endpoints.

BeispielExample

BeschreibungDescription

Der folgende Beispielcode veranschaulicht, wie einen WCF-Endpunkt hinzufügen, die kompatibel mit ASP.NETASP.NET -Webdienstclients im Code und Alternativ in einer Konfigurationsdatei.The following example code demonstrates how to add a WCF endpoint that is compatible with ASP.NETASP.NET Web service clients in code and, alternatively, in a configuration file.

CodeCode

using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;

[ServiceContract]
public interface IEcho
{
    [OperationContract]
    string Echo(string s);
}

public class MyService : IEcho
{
    public string Echo(string s)
    {
        return s;
    }
}

class Program
{
    static void Main(string[] args)
    {
        string baseAddress = "http://localhost:8080/wcfselfhost/";
        ServiceHost host = new ServiceHost(typeof(MyService), new Uri(baseAddress));

        // Create a BasicHttpBinding instance
        BasicHttpBinding binding = new BasicHttpBinding();

        // Add a service endpoint using the created binding
        host.AddServiceEndpoint(typeof(IEcho), binding, "echo1");

        host.Open();
        Console.WriteLine("Service listening on {0} . . .", baseAddress);
        Console.ReadLine();
        host.Close();
    }
}

Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Description

<ServiceContract()> _
Public Interface IEcho

    <OperationContract()> _
    Function Echo(ByVal s As String) As String

End Interface

Public Class MyService
    Implements IEcho

    Public Function Echo(ByVal s As String) As String Implements IEcho.Echo
        Return s
    End Function

End Class

Friend Class Program

    Shared Sub Main(ByVal args() As String)
        Dim baseAddress = "http://localhost:8080/wcfselfhost/"
        Dim host As New ServiceHost(GetType(MyService), _
                                    New Uri(baseAddress))

        ' Add a service endpoint using the created binding
        With host
            .AddServiceEndpoint(GetType(IEcho), _
                                New BasicHttpBinding(), _
                                "echo1")
            .Open()
            Console.WriteLine("Service listening on {0} . . .", _
                              baseAddress)
            Console.ReadLine()
            .Close()
        End With
    End Sub
End Class
<configuration>
  <system.serviceModel>
    <services>
      <service name="MyService" behaviorConfiguration="HttpGetMetadata">
        <endpoint address="echo2" contract="IEcho" binding="basicHttpBinding" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="HttpGetMetadata">
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

Siehe auchSee Also

Interoperabilität mit ASP.NET-WebdienstenInteroperability with ASP.NET Web Services