Delen via


Procedure: WCF-service configureren voor samenwerking met ASP.NET webserviceclients

Als u een WCF-service-eindpunt (Windows Communication Foundation) wilt configureren dat deze compatibel is met ASP.NET-webserviceclients, gebruikt u het System.ServiceModel.BasicHttpBinding type als het bindingstype voor uw service-eindpunt.

U kunt eventueel ondersteuning inschakelen voor HTTPS- en transportniveauclientverificatie op de binding. ASP.NET webserviceclients bieden geen ondersteuning voor MTOM-berichtcodering. De eigenschap moet dus worden overgelaten als de BasicHttpBinding.MessageEncoding standaardwaarde.WSMessageEncoding.Text ASP.NET webserviceclients bieden geen ondersteuning voor WS-Security, dus moet deze BasicHttpBinding.Security worden ingesteld op Transport.

Als u de metagegevens voor een WCF-service beschikbaar wilt maken voor ASP.NET hulpprogramma's voor het genereren van webservicesproxy's (dat wil gezegd, Web Services Description Language Tool (Wsdl.exe)Disco.exe, en de functie Webreferentie toevoegen in Visual Studio), moet u een HTTP/GET-metagegevenseindpunt beschikbaar maken.

Een eindpunt toevoegen in code

  1. Een nieuw BasicHttpBinding exemplaar maken

  2. Schakel eventueel transportbeveiliging in voor deze service-eindpuntbinding door de beveiligingsmodus voor de binding in te Transportstellen op. Zie Transportbeveiliging voor meer informatie.

  3. Voeg een nieuw toepassingseindpunt toe aan uw servicehost met behulp van het bindingexemplaren dat u zojuist hebt gemaakt. Zie de instructies voor het maken van een service-eindpunt in code voor meer informatie over het toevoegen van een service-eindpunt in code.

  4. Schakel een HTTP/GET-metagegevenseindpunt in voor uw service. Zie Voor meer informatie : Metagegevens publiceren voor een service met behulp van code.

Een eindpunt toevoegen aan een configuratiebestand

  1. Maak een nieuwe BasicHttpBinding bindingsconfiguratie. Zie de procedure : Een servicebinding opgeven in configuratie voor meer informatie.

  2. Schakel eventueel transportbeveiliging in voor deze bindingsconfiguratie voor service-eindpunten door de beveiligingsmodus voor de binding in te Transportstellen op. Zie Transportbeveiliging voor meer informatie.

  3. Configureer een nieuw toepassingseindpunt voor uw service met behulp van de bindingsconfiguratie die u zojuist hebt gemaakt. Zie het artikel Procedure: Een service-eindpunt maken in configuratie voor meer informatie over het toevoegen van een service-eindpunt in een configuratiebestand.

  4. Schakel een HTTP/GET-metagegevenseindpunt in voor uw service. Zie de instructies voor het publiceren van metagegevens voor een service met behulp van een configuratiebestand voor meer informatie.

Opmerking

In de volgende voorbeeldcode ziet u hoe u een WCF-eindpunt toevoegt dat compatibel is met ASP.NET-webserviceclients in code en ook in configuratiebestanden.

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.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