Vorgehensweise: Konfigurieren eines WCF-Diensts für die Zusammenarbeit mit ASP.NET Webdienstclients

Verwenden Sie den Typ System.ServiceModel.BasicHttpBinding als Bindungstyp für Ihren Dienstendpunkt, um einen Windows Communication Foundation (WCF)-Dienstendpunkt so zu konfigurieren, dass er mit ASP.NET-Webdienstclients zusammenarbeitet.

Sie können für die Bindung auch Unterstützung für HTTPS und Clientauthentifizierung auf Transportebene aktivieren. ASP.NET-Webdienstclients unterstützen keine MTOM-Nachrichtencodierung; daher sollte die Eigenschaft System.ServiceModel.BasicHttpBinding.MessageEncoding ihren Standardwert, System.ServiceModel.WSMessageEncoding.Text, behalten. ASP.NET-Webdienstclients unterstützen WS-Sicherheit nicht; deshalb sollte System.ServiceModel.BasicHttpBinding.Security auf Transport festgelegt werden.

Um die Metadaten eines WCF-Diensts den ASP.NET-Webdienst-Proxygenerierungstools (also dem Web Services Description Language Tool (Wsdl.exe), dem Web Services Discovery Tool (Disco.exe) (beides möglicherweise in englischer Sprache) und der Funktion "Webverweis hinzufügen" von Visual Studio) zur Verfügung zu stellen, müssen Sie einen HTTP/GET-Metadatenendpunkt freigeben.

So fügen Sie einen WCF-Endpunkt hinzu, der im Code mit ASP.NET-Webdienstclients kompatibel ist

  1. Erstellen Sie eine neue BasicHttpBinding-Instanz.

  2. Aktivieren Sie optional Transportsicherheit für diese Dienstendpunktbindung, indem Sie den Sicherheitsmodus für die Bindung auf Transport festlegen. Ausführliche Informationen finden Sie unter Transportsicherheit.

  3. Fügen Sie dem Diensthost einen neuen Anwendungsendpunkt mit der Bindungsinstanz hinzu, die Sie soeben erstellt haben. Ausführliche Informationen zum Hinzufügen eines Dienstendpunkts in den Code finden Sie unter Gewusst wie: Erstellen eines Dienstendpunkts im Code.

  4. Aktivieren Sie einen HTTP/GET-Metadatenendpunkt für Ihren Dienst. Ausführliche Informationen finden Sie unter Gewusst wie: Veröffentlichen von Metadaten für einen Dienst über den Code.

So fügen Sie einen WCF-Endpunkt, der mit ASP.NET-Webdienstclients kompatibel ist, einer Konfigurationsdatei hinzu.

  1. Erstellen Sie eine neue BasicHttpBinding-Bindungskonfiguration. Ausführliche Informationen finden Sie unter Vorgehensweise: Angeben einer Dienstbindung in einer Konfiguration.

  2. Aktivieren Sie optional Transportsicherheit für diese Dienstendpunkt-Bindungskonfiguration, indem Sie den Sicherheitsmodus für die Bindung auf Transport festlegen. Weitere Informationen finden Sie unter Transportsicherheit.

  3. Konfigurieren Sie einen neuen Anwendungsendpunkt für Ihren Dienst, indem Sie die Bindungskonfiguration verwenden, die Sie gerade erstellt haben. Weitere Informationen zum Hinzufügen eines Dienstendpunkts zu einer Konfigurationsdatei finden Sie unter Gewusst wie: Erstellen eines Dienstendpunkts in einer Konfiguration.

  4. Aktivieren Sie einen HTTP/GET-Metadatenendpunkt für Ihren Dienst. Ausführliche Informationen finden Sie unter Gewusst wie: Veröffentlichen von Metadaten für einen Dienst mithilfe einer Konfigurationsdatei.

Beispiel

Der folgende Beispielcode zeigt das Hinzufügen eines WCF-Endpunkts, der im Code und alternativ in den Konfigurationsdateien kompatibel mit den ASP.NET-Webdienstclients ist.

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 = "https://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
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 = "https://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();
    }
}
<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 auch

Aufgaben

Gewusst wie: Erstellen eines Dienstendpunkts im Code
Gewusst wie: Veröffentlichen von Metadaten für einen Dienst über den Code
Vorgehensweise: Angeben einer Dienstbindung in einer Konfiguration
Gewusst wie: Erstellen eines Dienstendpunkts in einer Konfiguration
Gewusst wie: Veröffentlichen von Metadaten für einen Dienst mithilfe einer Konfigurationsdatei

Konzepte

Verwenden von Metadaten

Weitere Ressourcen

Transportsicherheit