Condividi tramite


Procedura: modificare i destinatari di un’intestazione SOAP

Questo argomento è specifico di una tecnologia legacy. Servizi Web XML e client di servizi Web XML devono essere creati attualmente tramite Windows Communication Foundation.

Esempio di codice

Per impostazione predefinita, quando un attributo SoapHeader viene applicato a un metodo del servizio Web, le intestazioni SOAP vengono inviate da un client del servizio Web a un metodo del servizio Web. Tuttavia, un'intestazione SOAP può anche essere inviata in direzione opposta dal metodo del servizio Web al client del servizio Web. Può essere inoltre inviata in entrambe le direzioni. L'impostazione della proprietà Direction di un attributo SoapHeader applicato a un metodo del servizio Web serve a controllare il destinatario dell'intestazione SOAP. La proprietà Direction è di tipo SoapHeaderDirection, che dispone di quattro valori: In, Out, InOut e Fault. Tali valori sono riferiti al destinatario (se è il server del servizio Web), al client, oppure a entrambi, e indicano se l'intestazione SOAP è inviata al client quando viene generata un'eccezione dal servizio Web.

Nota: la versione 1.0 di .NET Framework SDK non supporta il valore Fault.

Per modificare il destinatario dell'intestazione SOAP

  1. Definire l’intestazione 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. Aggiungere una variabile alla classe che implementa il servizio 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. Applicare un attributo SoapHeader a ogni metodo del servizio Web che elabora l'intestazione SOAP. Impostare la proprietà Direction su ogni destinatario desiderato utilizzando l'enumerazione SoapHeaderDirection. Nell’esempio seguente, il client del servizio Web viene configurato come il destinatario impostando Direction su SoapHeaderDirection.Out.

    
        [WebMethod]
        [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    
        <WebMethod, _
         SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
    
  4. Elaborare o impostare l'intestazione SOAP, a seconda del destinatario. Nell'esempio di codice seguente, poiché il destinatario è il client del servizio Web, vengono impostati i valori dell'intestazione SOAP,.

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

Esempio

Nell'esempio di codice seguente viene definita un'intestazione SOAP MyHeader che è inviata dal metodo del servizio Web al 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

Vedere anche

Riferimento

SoapHeader
SoapHeaderAttribute
SoapUnknownHeader
SoapHeaderException

Concetti

Compilazione di client dei servizi Web XML

Altre risorse

Utilizzo delle intestazioni SOAP
Creare servizi Web XML mediante ASP.NET