Procédure : configurer le service WCF pour interagir avec des clients de services web ASP.NET
Pour configurer un point de terminaison de service Windows Communication Foundation (WCF) de manière à ce qu’il puisse interagir avec des clients de services 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 de services web ASP.NET ne prennent pas en charge l'encodage de messages MTOM. La propriété BasicHttpBinding.MessageEncoding doit donc conserver sa valeur par défaut, soit WSMessageEncoding.Text. Les clients de services web ASP.NET ne prennent pas en charge la spécification WS-Security. BasicHttpBinding.Security doit donc avoir la valeur Transport.
Pour rendre les métadonnées d'un service WCF accessibles aux outils de génération de proxy de service web ASP.NET (à savoir 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.
Ajouter un point de terminaison dans le code
Créez une nouvelle instance BasicHttpBinding.
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é du transport.
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 le code, consultez Guide pratique pour créer un point de terminaison de service dans le code.
Activez un point de terminaison de métadonnées HTTP/GET pour votre service. Pour plus d’informations, consultez Guide pratique pour publier les métadonnées d’un service à l’aide de code.
Ajouter un point de terminaison dans un fichier config
Créez une configuration de liaison BasicHttpBinding. Pour plus d’informations, consultez Guide pratique pour spécifier une liaison de service dans la configuration.
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é du transport.
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 config, consultez Guide pratique pour créer un point de terminaison de service dans la configuration.
Activez un point de terminaison de métadonnées HTTP/GET pour votre service. Pour plus d’informations, consultez Guide pratique pour publier des métadonnées pour un service à l’aide d’un fichier config.
Exemple
L'exemple de code ci-dessous montre comment ajouter un point de terminaison WCF compatible avec les clients de services web ASP.NET dans du code, ainsi que dans des fichiers config.
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>
Voir aussi
- Procédure : créer un point de terminaison de Service dans le code
- Procédure : publier des métadonnées pour un service à l’aide de code
- Procédure : spécifier une liaison de service dans la configuration
- Procédure : créer un point de terminaison de service dans la configuration
- Procédure : publier des métadonnées pour un service à l’aide d’un fichier de configuration
- Sécurité de transport
- Utilisation des métadonnées