Freigeben über


SoapHeader-Klasse

Stellt beim Überschreiben in einer abgeleiteten Klasse den Inhalt eines SOAP-Headers dar.

Namespace: System.Web.Services.Protocols
Assembly: System.Web.Services (in system.web.services.dll)

Syntax

'Declaration
Public MustInherit Class SoapHeader
'Usage
Dim instance As SoapHeader
public abstract class SoapHeader
public ref class SoapHeader abstract
public abstract class SoapHeader
public abstract class SoapHeader

Hinweise

SOAP-Header bieten eine Methode zum Übergeben von Daten an eine XML-Webdienstmethode und zum Empfangen von Daten aus einer XML-Webdienstmethode, sofern die Daten nicht direkt mit der primären Funktion der XML-Webdienstmethode in Zusammenhang stehen. Ein XML-Webdienst kann z. B. mehrere XML-Webdienstmethoden enthalten, von denen jede ein benutzerdefiniertes Authentifizierungsschema erfordert. Anstatt in allen XML-Webdienstmethoden Parameter für das benutzerdefinierte Authentifizierungsschema hinzuzufügen, kann ein SoapHeaderAttribute auf die einzelnen XML-Webdienstmethoden angewendet werden, das auf eine vom SoapHeader abgeleitete Klasse verweist. Die Implementierung für die vom SoapHeader abgeleitete Klasse behandelt das benutzerdefinierte Authentifizierungsschema. Auf diese Art und Weise implementiert die XML-Webdienstmethode nur die für sie spezifischen Funktionen und fügt unter Verwendung eines SOAP-Headers zusätzliche Funktionen hinzu.

Die folgende Liste gibt eine Übersicht über die grundlegenden Schritte zum Empfangen und Verarbeiten eines SOAP-Headers:

  1. Erstellen Sie eine von SoapHeader abgeleitete Klasse, die die an den SOAP-Header übergebenen Daten darstellt.

  2. Fügen Sie der Klasse, die einen XML-Webdienst oder eine Proxyklasse eines XML-Webdienstclients implementiert, einen Member hinzu, der dem im ersten Schritt erstellten Typ entspricht.

  3. Wenden Sie ein SoapHeaderAttribute auf die XML-Webdienstmethode oder die entsprechende Methode in der Proxyklasse an, und geben Sie dabei in der MemberName-Eigenschaft den im zweiten Schritt erstellten Member an.

  4. Greifen Sie im Code der XML-Webdienstmethode oder des XML-Webdienstclients auf die MemberName-Eigenschaft zu, um die im SOAP-Header gesendeten Daten zu verarbeiten.

Beispiel

Vom folgenden XML-Webdienst MyWebService wird der SOAP-Header MyHeader definiert, und es wird festgelegt, dass dieser bei jedem Aufruf der XML-Webdienstmethode MyWebMethod mitgesendet werden muss. Darüber hinaus empfängt MyWebMethod alle SOAP-Header mit Ausnahme von MyHeader.

<%@ WebService Language="VB" Class="MyWebService"%>

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

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

Public Class MyWebService
    
    Public theHeader As MyHeader
    ' Receive all SOAP headers besides the MyHeader SOAP header.
    Public unknownHeaders() As SoapUnknownHeader    

    'Receive any SOAP headers other than MyHeader.    
    <WebMethod, _
     SoapHeader("theHeader", Direction := SoapHeaderDirection.InOut), _
     SoapHeader("unknownHeaders")> _
    Public Function MyWebMethod() As String
                
        Dim header As SoapUnknownHeader
        For Each header In unknownHeaders
            ' Perform some processing on the header.
            If header.Element.Name = "MyKnownHeader" Then
                header.DidUnderstand = True
            Else
                ' For those headers that cannot be
                ' processed, set the DidUnderstand propert to false.
                header.DidUnderstand = False
            End If
        Next header
        Return "Hello"
    End Function
    
End Class
<%@ WebService Language="C#" Class="MyWebService"%>
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml;
using System;

// Define a SOAP header by deriving from the SoapHeader base class.

public class MyHeader : SoapHeader {
    public string MyValue;
}

public class MyWebService {

    public MyHeader myHeader;
    // Receive all SOAP headers besides the MyHeader SOAP header.
    public SoapUnknownHeader[] unknownHeaders;
 
    [WebMethod]
    [SoapHeader("myHeader", Direction=SoapHeaderDirection.InOut)]

    //Receive any SOAP headers other than MyHeader.
    [SoapHeader("unknownHeaders",Required=false)]

    public string MyWebMethod() {

       foreach (SoapUnknownHeader header in unknownHeaders) {
           // Perform some processing on the header.
       if (header.Element.Name == "MyKnownHeader")
               header.DidUnderstand = true;
       else
                // For those headers that cannot be  
                // processed, set the DidUnderstand property to false.
                header.DidUnderstand = false;
       }
       return "Hello";
    }
}

Vererbungshierarchie

System.Object
  System.Web.Services.Protocols.SoapHeader
     System.Web.Services.Protocols.SoapUnknownHeader

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

SoapHeader-Member
System.Web.Services.Protocols-Namespace
SoapUnknownHeader
SoapHeaderException
SoapHeaderAttribute
SoapHeaderDirection