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

So konfigurieren Sie eine Windows Communication Foundation (WCF) -Dienstendpunkt, Interoperabilität mit ASP.NET -Webdienstclients ist, verwenden Sie die System.ServiceModel.BasicHttpBinding Typ als Bindungstyp für den Dienstendpunkt.

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, damit der BasicHttpBinding.MessageEncoding Eigenschaft sollte den Standardwert bleiben System.ServiceModel.WSMessageEncoding. ASP.NET-Webdienstclients unterstützen keine WS-Security, damit der BasicHttpBinding.Security sollte festgelegt werden, um BasicHttpSecurityMode.

Zu den Metadaten für eine WCF Dienst zum ASP.NET Web Service Tools zur Proxygenerierung (, also Web Services Description Language Tool (Wsdl.exe), Webdienste-Suchtool (Disco.exe), und die Funktion "Webverweis hinzufügen" in Visual Studio), Sie sollten einen HTTP/GET-Metadatenendpunkt verfügbar zu machen.

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

  1. Erstellen Sie ein neues BasicHttpBinding Instanz

  2. Aktivieren Sie optional transportsicherheit für diese dienstendpunktbindung, indem Festlegen des Sicherheitsmodus für die Bindung an BasicHttpSecurityMode. Weitere 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 im Code finden Sie unter der Gewusst wie: Erstellen eines Dienstendpunkts im Code.

  4. Aktivieren Sie einen HTTP/GET-Metadatenendpunkt für Ihren Dienst. Weitere Informationen finden Sie Gewusst wie: Veröffentlichen von Metadaten für einen Dienst mithilfe von Code.

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

  1. Erstellen Sie ein neues BasicHttpBinding Bindungskonfiguration. Weitere Informationen finden Sie unter der Gewusst wie: Angeben einer Dienstbindung in einer Konfiguration.

  2. Aktivieren Sie optional transportsicherheit für diese Dienstendpunkt-Bindungskonfiguration durch Festlegen des Sicherheitsmodus für die Bindung an BasicHttpSecurityMode. 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. Ausführliche Informationen zum Hinzufügen eines Dienstendpunkts in einer Konfigurationsdatei finden Sie unter der Gewusst wie: Erstellen eines Dienstendpunkts in der Konfiguration.

  4. Aktivieren Sie einen HTTP/GET-Metadatenendpunkt für Ihren Dienst. Weitere Informationen finden Sie die 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.

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

Siehe auch

Gewusst wie: Erstellen eines Dienstendpunkts im Code
Gewusst wie: Veröffentlichen von Metadaten für einen Dienst mithilfe von Code
Gewusst wie: angeben eine Dienstbindung in einer Konfiguration
Gewusst wie: Erstellen eines Dienstendpunkts in der Konfiguration
Gewusst wie: Veröffentlichen von Metadaten für einen Dienst mithilfe einer Konfigurationsdatei
Transportsicherheit
Mithilfe von Metadaten