Delen via


Het creëren van WS-I Basic Profile 1.1 Interoperable Services

Een WCF-service-eindpunt configureren dat compatibel is met ASP.NET webserviceclients:

  • Gebruik het type System.ServiceModel.BasicHttpBinding als het bindingstype voor uw service-eindpunt.

  • Gebruik geen callback- en sessiecontractfuncties of transactiegedrag op uw service-eindpunt

U kunt eventueel ondersteuning inschakelen voor HTTPS- en transportniveauclientverificatie op de binding.

De volgende functies van de BasicHttpBinding-klasse vereisen functionaliteit buiten WS-I Basic Profile 1.1:

  • Berichttransmissieoptimalisatiemechanisme (MTOM) berichtcodering beheerst door de eigenschap BasicHttpBinding.MessageEncoding. Laat deze eigenschap op de standaardwaarde staan. Dit is WSMessageEncoding.Text om MTOM niet te gebruiken.

  • Berichtbeveiliging die wordt beheerd door de BasicHttpBinding.Security-waarde biedt WS-Security ondersteuning die compatibel is met WS-I Basic Security Profile 1.0. Laat deze eigenschap op de standaardwaarde staan. Dit is SecurityMode.Transport om WS-Security niet te gebruiken.

Als u de metagegevens voor een WCF-service beschikbaar wilt maken voor ASP.NET, gebruikt u de hulpprogramma's voor het genereren van webservicesclients: hulpprogramma voor beschrijvingstaal van webservices (Wsdl.exe), hulpprogramma voor webservicesdetectie (Disco.exe)en de functie webreferentie toevoegen in Visual Studio. Publicatie van metagegevens inschakelen. Zie Metagegevenseindpunten publicerenvoor meer informatie.

Voorbeeld

Beschrijving

De volgende voorbeeldcode laat zien hoe u een WCF-eindpunt toevoegt dat compatibel is met ASP.NET-webserviceclients, zowel in de code als in een configuratiebestand.

Code

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 {baseAddress} . . .");
        Console.ReadLine();
        host.Close();
    }
}

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>

Zie ook