Création de services pouvant interagir avec le profil Basic Profile 1.1 de WS-I

Pour configurer un point de terminaison de service WCF afin qu'il puisse interagir avec les clients du service Web ASP.NET :

  • Utilisez le type System.ServiceModel.BasicHttpBinding comme type de liaison pour votre point de terminaison de service.

  • N'utilisez pas les fonctionnalités de rappel et de contrat de session, ni les comportements de transaction sur votre point de terminaison de service

Vous pouvez éventuellement activer la prise en charge du protocole HTTPS et de l'authentification du client au niveau du transport sur la liaison.

Les fonctionnalités suivantes de la classe BasicHttpBinding requièrent des fonctionnalités qui dépassent le profil Basic Profile 1.1 de WS-I :

Pour mettre les métadonnées d'un service WCF à la disposition d'ASP.NET, utilisez les outils de génération de client du service Web : Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe) et la fonctionnalité Add Web Reference dans Visual Studio; vous devez activer la publication de métadonnées. Pour plus d'informations, consultez Publication de points de terminaison de métadonnées.

Exemple

Description

L'exemple de code ci-dessous montre comment ajouter un point de terminaison WCF qui est compatible avec les clients du service Web ASP.NET dans du code, ainsi que dans des fichiers de configuration.

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>

Voir aussi

Concepts

Interopérabilité avec les services Web ASP.NET