Partager via


Comment : configurer le service WCF pour interagir avec des clients du service Web ASP.NET

Pour configurer un point de terminaison de service Windows Communication Foundation (WCF) de manière à 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.

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 clients du service Web ASP.NET ne prennent pas en charge l'encodage de messages MTOM, donc la propriété System.ServiceModel.BasicHttpBinding.MessageEncoding doit conserver sa valeur par défaut, soit System.ServiceModel.WSMessageEncoding.Text. Les clients du service Web ASP.NET ne prennent pas en charge la spécification WS-Security, donc System.ServiceModel.BasicHttpBinding.Security doit avoir la valeur Transport.

Pour rendre les métadonnées d'un service WCF disponibles aux outils de génération de proxy du service Web ASP.NET (c'est-à-dire Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe) et la fonctionnalité Ajouter une référence Web dans Visual Studio), vous devez exposer un point de terminaison de métadonnées HTTP/GET.

Pour ajouter un point de terminaison WCF compatible avec les clients du service Web ASP.NET dans du code

  1. Créez une nouvelle instance BasicHttpBinding.

  2. Vous pouvez éventuellement activer la sécurité de transport pour cette liaison de point de terminaison de service en affectant au mode de sécurité de la liaison la valeur Transport. Pour plus d'informations, consultez Sécurité de transport.

  3. Ajoutez un nouveau point de terminaison d'application à votre hôte de service à l'aide de l'instance de liaison que vous venez de créer. Pour plus d'informations sur l'ajout d'un point de terminaison de service dans du code, consultez Comment : créer un point de terminaison de service dans le code.

  4. Activez un point de terminaison de métadonnées HTTP/GET pour votre service. Pour plus d'informations, consultez Comment : publier les métadonnées d'un service à l'aide de code.

Pour ajouter un point de terminaison WCF compatible avec les clients du service Web ASP.NET dans un fichier de configuration

  1. Créez une configuration de liaison BasicHttpBinding. Pour plus d'informations, consultez Comment : spécifier une liaison de service dans la configuration.

  2. Vous pouvez éventuellement activer la sécurité de transport pour la configuration de cette liaison de point de terminaison de service en affectant au mode de sécurité de la liaison la valeur Transport. Pour plus d'informations, consultez Sécurité de transport.

  3. Configurez un nouveau point de terminaison d'application pour votre service à l'aide de la configuration de liaison que vous venez de créer. Pour plus d'informations sur l'ajout d'un point de terminaison de service dans un fichier de configuration, consultez Comment : créer un point de terminaison de service dans la configuration..

  4. Activez un point de terminaison de métadonnées HTTP/GET pour votre service. Pour plus d'informations, consultez Comment : publier les métadonnées d'un service à l'aide d'un fichier de configuration.

Exemple

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.

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

Tâches

Comment : créer un point de terminaison de service dans le code
Comment : publier les métadonnées d'un service à l'aide de code
Comment : spécifier une liaison de service dans la configuration
Comment : créer un point de terminaison de service dans la configuration.
Comment : publier les métadonnées d'un service à l'aide d'un fichier de configuration

Concepts

Utilisation des métadonnées

Autres ressources

Sécurité de transport