Comment : modifier les destinataires d'un en-tête SOAP

Cette rubrique est spécifique à une technologie existante. Les services Web XML et les clients du service Web XML doivent à présent être créés à l'aide de Windows Communication Foundation.

Exemple de code

Par défaut, les en-têtes SOAP sont envoyés par un client de service Web à une méthode de service Web lorsqu'un attribut SoapHeader est appliqué à une méthode de service Web. Toutefois, un en-tête SOAP peut également être renvoyé par la méthode de service Web au client de service Web. Il peut également être envoyé dans les deux directions. La définition de la propriété Direction d'un attribut SoapHeader appliquée à une méthode de service Web contrôle le destinataire de l'en-tête SOAP. La propriété Direction est de type SoapHeaderDirection, qui a quatre valeurs: In, Out, InOut et Fault. Celles-ci font référence au destinataire (s'agit-il du serveur de service Web), au client, ou au serveur et au client de service Web à la fois, et indiquent si l'en-tête SOAP est envoyé au client lorsqu'une exception est levée par le service Web.

Remarque : la version 1.0 du .NET Framework SDK ne prend pas en charge la valeur Fault.

Pour modifier le destinataire de l'en-tête SOAP

  1. Définissez l'en-tête SOAP.

    public class MyHeader : SoapHeader 
    {
        public string Username;
        public string Password;
    }
    
    Public Class MyHeader : Inherits SoapHeader 
        Public Username As String
        Public Password As String
    End Class
    
  2. Ajoutez une variable membre à la classe qui implémente le service Web.

    [WebService(Namespace="https://www.contoso.com")]
    public class MyWebService : WebService
    {
        public MyHeader myOutHeader;
    
    <WebService(Namespace:="https://www.contoso.com")> _
    Public Class MyWebService : Inherits WebService
        Public myOutHeader As MyHeader
    
  3. Appliquez un attribut SoapHeader à chaque méthode de service Web qui traite l'en-tête SOAP. Définissez la propriété Direction pour chaque destinataire souhaité, à l'aide de l'énumération SoapHeaderDirection. L'exemple suivant définit le client de service Web comme destinataire en affectant à Direction la valeur SoapHeaderDirection.Out.

    
        [WebMethod]
        [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    
        <WebMethod, _
         SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
    
  4. Traitez ou définissez l'en-tête SOAP, selon le destinataire. L'exemple de code suivant définit les valeurs de l'en-tête SOAP, car le destinataire est le client de service Web.

          // Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name;
    
          ' Return the client's authenticated name.
          myOutHeader.Username = User.Identity.Name
    
    

Exemple

L'exemple de code suivant définit un en-tête SOAP MyHeader envoyé de la méthode de service Web au client.

<%@ WebService Language="C#" Class="MyWebService" %>

using System.Web.Services;
using System.Web.Services.Protocols;

// Define a SOAP header by deriving from the SoapHeader base class.
public class MyHeader : SoapHeader 
{
    public string Username;
    public string Password;
}

[WebService(Namespace="https://www.contoso.com")]
public class MyWebService : WebService
{
    public MyHeader myOutHeader;
 
    [WebMethod]
    [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    public void MyOutHeaderMethod() 
    {
      // Return the client's authenticated name.
      myOutHeader.Username = User.Identity.Name;          
    }
}
<%@ WebService Language="VB" Class="MyWebService" %>

Imports System.Web.Services
Imports System.Web.Services.Protocols

' Define a SOAP header by deriving from the SoapHeader base class.
Public Class MyHeader : Inherits SoapHeader 
    Public Username As String
    Public Password As String
End Class

<WebService(Namespace:="https://www.contoso.com")> _
Public Class MyWebService : Inherits WebService
    Public myOutHeader As MyHeader 
    
    <WebMethod, _
     SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)> _
    Public Sub MyOutHeaderMethod()
        ' Return the client's authenticated name.
        myOutHeader.Username = User.Identity.Name
    End Sub
End Class

Voir aussi

Référence

SoapHeader
SoapHeaderAttribute
SoapUnknownHeader
SoapHeaderException

Concepts

Création de clients de service Web XML

Autres ressources

Utilisation d'en-têtes SOAP
Services Web XML utilisant ASP.NET