Freigeben über


Gewusst wie: Ändern der Empfänger eines SOAP-Headers

Codebeispiel

Standardmäßig werden SOAP-Header von einem Webdienstclient an eine Webdienstmethode gesendet, wenn ein SoapHeader-Attribut auf eine Webdienstmethode angewendet wird. Ein SOAP-Header kann allerdings auch von der Webdienstmethode an den Webdienstclient zurückgesendet werden. Er kann auch in beide Richtungen gesendet werden. Der Empfänger des SOAP-Headers wird durch Festlegen der Direction-Eigenschaft eines SoapHeader-Attributs gesteuert, das auf eine Webdienstmethode angewendet wird. Die Direction-Eigenschaft weist den Typ SoapHeaderDirection auf, der über vier Werte verfügt: In, Out, InOut und Fault. Diese verweisen auf den Empfänger (d. h. ob es sich um den Webdienstserver handelt), auf den Client oder sowohl auf den Webdienstserver als auch auf den Client bzw. geben an, ob der SOAP-Header an den Client gesendet wird, wenn der Webdienst eine Ausnahme auslöst.

Hinweis: Version 1.0 des .NET Framework SDK unterstützt den Fault-Wert nicht.

So ändern Sie den Empfänger des SOAP-Headers

  1. Definieren Sie den SOAP-Header.

    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. Fügen Sie der Klasse, die den Webdienst implementiert, eine Membervariable hinzu.

    [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. Wenden Sie ein SoapHeader-Attribut auf jede Webdienstmethode an, die den SOAP-Header verarbeitet. Legen Sie die Direction-Eigenschaft mithilfe der SoapHeaderDirection-Enumeration auf jeden beabsichtigten Empfänger fest. Im folgenden Beispiel wird der Webdienstclient als Empfänger angegeben, indem Direction auf SoapHeaderDirection.Out festgelegt wird.

    
        [WebMethod]
        [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
    
        <WebMethod, _
         SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
    
  4. Verarbeiten Sie den SOAP-Header, oder legen Sie den SOAP-Header fest (abhängig vom Empfänger). Im folgenden Codebeispiel werden die Werte des SOAP-Headers festgelegt, weil der Empfänger der Webdienstclient ist.

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

Beispiel

Im folgenden Codebeispiel wird ein MyHeader-SOAP-Header definiert, der von der Webdienstmethode an den Client gesendet wird.

<%@ 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

Siehe auch

Referenz

SoapHeader
SoapHeaderAttribute
SoapUnknownHeader
SoapHeaderException

Konzepte

Erstellen von XML-Webdienstclients

Weitere Ressourcen

Verwenden von SOAP-Headern
XML-Webdienste, die ASP.NET verwenden

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.