Vorgehensweise: Konfigurieren eines WCF-Diensts für die Zusammenarbeit mit ASP.NET WebdienstclientsHow to: Configure WCF Service to Interoperate with ASP.NET Web Service Clients

So konfigurieren Sie einen Dienstendpunkt Windows Communication Foundation (WCF), um die Interoperabilität mit werden ASP.NETASP.NET -Webdienstclients ist, verwenden Sie die System.ServiceModel.BasicHttpBinding -Typ als Bindungstyp für den Dienstendpunkt.To configure a Windows Communication Foundation (WCF) service endpoint to be interoperable with ASP.NETASP.NET Web service clients, use the System.ServiceModel.BasicHttpBinding type as the binding type for 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. ASP.NETASP.NET-Webdienstclients unterstützen keine MTOM-Nachrichtencodierung; daher sollte die Eigenschaft BasicHttpBinding.MessageEncoding ihren Standardwert, WSMessageEncoding.Text, behalten. Web service clients do not support MTOM message encoding, so the BasicHttpBinding.MessageEncoding property should be left as its default value, which is WSMessageEncoding.Text. ASP.NET-Webdienstclients unterstützen WS-Sicherheit nicht; deshalb sollte BasicHttpBinding.Security auf Transport festgelegt werden.ASP.Net Web Service clients do not support WS-Security, so the BasicHttpBinding.Security should be set to Transport.

Um die Metadaten für einen WCF-Dienst verfügbar zu machen ASP.NETASP.NET Web Service Proxy Generation Tools (d. h. Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe), und das Feature "Webverweis hinzufügen" in Visual Studio), Sie sollten einen HTTP/GET-Metadatenendpunkt verfügbar zu machen.To make the metadata for a WCF service available to ASP.NETASP.NET Web service proxy generation tools (that is, Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe), and the Add Web Reference feature in Visual Studio), you should expose an HTTP/GET metadata endpoint.

So fügen Sie einen WCF-Endpunkt hinzu, der im Code mit ASP.NET-Webdienstclients kompatibel istTo add a WCF endpoint that is compatible with ASP.NET Web service clients in code

  1. Erstellen Sie eine neue BasicHttpBinding-Instanz.Create a new BasicHttpBinding instance

  2. Aktivieren Sie optional Transportsicherheit für diese Dienstendpunktbindung, indem Sie den Sicherheitsmodus für die Bindung auf Transport festlegen.Optionally enable transport security for this service endpoint binding by setting the security mode for the binding to Transport. Weitere Informationen finden Sie unter Transportsicherheit.For details, please see Transport Security.

  3. Fügen Sie dem Diensthost einen neuen Anwendungsendpunkt mit der Bindungsinstanz hinzu, die Sie soeben erstellt haben.Add a new application endpoint to your service host using the binding instance that you just created. Ausführliche Informationen zum Hinzufügen eines Dienstendpunkts im Code finden Sie unter der Vorgehensweise: Erstellen eines Dienstendpunkts im Code.For details about how to add a service endpoint in code, see the How to: Create a Service Endpoint in Code.

  4. Aktivieren Sie einen HTTP/GET-Metadatenendpunkt für Ihren Dienst.Enable an HTTP/GET metadata endpoint for your service. Weitere Informationen finden Sie Vorgehensweise: Veröffentlichen von Metadaten für einen Dienst mithilfe von Code.For details see How to: Publish Metadata for a Service Using Code.

So fügen Sie einen WCF-Endpunkt, der mit ASP.NET-Webdienstclients kompatibel ist, einer Konfigurationsdatei hinzu.To add a WCF endpoint that is compatible with ASP.NET Web service clients in a configuration file

  1. Erstellen Sie eine neue BasicHttpBinding-Bindungskonfiguration.Create a new BasicHttpBinding binding configuration. Einzelheiten finden Sie in der wie: Angeben einer Dienstbindung in einer Konfiguration.For details, see the How to: Specify a Service Binding in Configuration.

  2. Aktivieren Sie optional Transportsicherheit für diese Dienstendpunkt-Bindungskonfiguration, indem Sie den Sicherheitsmodus für die Bindung auf Transport festlegen.Optionally enable transport security for this service endpoint binding configuration by setting the security mode for the binding to Transport. Weitere Informationen finden Sie unter Transportsicherheit.For details, see Transport Security.

  3. Konfigurieren Sie einen neuen Anwendungsendpunkt für Ihren Dienst, indem Sie die Bindungskonfiguration verwenden, die Sie gerade erstellt haben.Configure a new application endpoint for your service using the binding configuration that you just created. Ausführliche Informationen zum Hinzufügen eines Dienstendpunkts in einer Konfigurationsdatei finden Sie unter der Vorgehensweise: Erstellen eines Dienstendpunkts in der Konfiguration.For details about how to add a service endpoint in a configuration file, see the How to: Create a Service Endpoint in Configuration.

  4. Aktivieren Sie einen HTTP/GET-Metadatenendpunkt für Ihren Dienst.Enable an HTTP/GET metadata endpoint for your service. Weitere Informationen finden Sie die Vorgehensweise: Veröffentlichen von Metadaten für einen Dienst mithilfe einer Konfigurationsdatei.For details see the How to: Publish Metadata for a Service Using a Configuration File.

BeispielExample

Der folgende Beispielcode veranschaulicht, wie einen WCF-Endpunkt hinzufügen, die kompatibel mit ASP.NETASP.NET -Webdienstclients im Code und Alternativ in Konfigurationsdateien.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 configuration files.

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

Vorgehensweise: Erstellen eines Dienstendpunkts im CodeHow to: Create a Service Endpoint in Code
Vorgehensweise: Veröffentlichen von Metadaten für einen Dienst über CodeHow to: Publish Metadata for a Service Using Code
Vorgehensweise: Angeben einer Dienstbindung in einer KonfigurationHow to: Specify a Service Binding in Configuration
Vorgehensweise: Erstellen eines Dienstendpunkts in einer KonfigurationHow to: Create a Service Endpoint in Configuration
Vorgehensweise: Veröffentlichen von Metadaten für einen Dienst mithilfe einer KonfigurationsdateiHow to: Publish Metadata for a Service Using a Configuration File
TransportsicherheitTransport Security
Verwenden von MetadatenUsing Metadata