Freigeben über


Erstellen von interoperablen WS-I Basic Profile 1.1-Diensten

So konfigurieren Sie einen WCF-Dienstendpunkt, sodass er mit ASP.NET-Webdienstclients interoperabel ist:

  • Verwenden Sie den System.ServiceModel.BasicHttpBinding-Typ als Bindungstyp für den Dienstendpunkt.

  • Verwenden Sie für den Dienstendpunkt keine Rückruf- und Sitzungsvertragsfunktionen oder Transaktionsverhalten.

Sie können für die Bindung auch Unterstützung für HTTPS und Clientauthentifizierung auf Transportebene aktivieren.

Die folgenden Funktionen der BasicHttpBinding-Klasse erfordern Funktionalität jenseits von WS-I Basic Profiles 1.1:

Um die Metadaten eines WCF-Diensts für ASP.NET verfügbar zu machen, verwenden Sie die Webdienstclientgenerierungstools: Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe) und die Funktion Webverweis hinzufügen in Visual Studio. Sie müssen die Metadatenveröffentlichung aktivieren. Weitere Informationen finden Sie unter Veröffentlichen von Metadatenendpunkten.

Beispiel

Beschreibung

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

Code

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

Konzepte

Interoperabilität mit ASP.NET-Webdiensten