Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Codebeispiel
SOAP-Header können mit Webdiensten, die mithilfe von ASP.NET erstellt wurden, definiert und bearbeitet werden. Zur Definition eines SOAP-Headers wird eine Klasse definiert, die die Daten in einem bestimmten SOAP-Header darstellt und die von der SoapHeader-Klasse abgeleitet wird.
So definieren Sie eine Klasse, die einen SOAP-Header darstellt
Erstellen Sie eine von der SoapHeader-Klasse abgeleitete Klasse, deren Name dem Stammelement für den SOAP-Header entspricht.
public class MyHeader : SoapHeader
Public Class MyHeader : Inherits SoapHeader
Fügen Sie öffentliche Felder oder Eigenschaften hinzu, wobei Sie für jedes Element im SOAP-Header Namen und entsprechende Datentypen zuordnen.
Wenn beispielsweise der folgende SOAP-Header gegeben ist, dann definiert der nachfolgende Code eine Klasse, die diesen SOAP-Header darstellt.
<soap:Header xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/"> <MyHeader xmlns="https://www.contoso.com"> <Created>dateTime</Expires> <Expires>long</Expires> </MyHeader> </soap:Header> public class MyHeader : SoapHeader { public DateTime Created; public long Expires; }
Public Class MyHeader : Inherits SoapHeader Public Created As DateTime Public Expires As Long End Class
So verarbeiten Sie SOAP-Header innerhalb eines Webdiensts
Fügen Sie der Klasse, die den Webdienst implementiert, einen öffentlichen Member des Typs hinzu, der den SOAP-Header repräsentiert.
[WebService(Namespace="https://www.contoso.com")] public class MyWebService { // Add a member variable of the type deriving from SoapHeader. public MyHeader timeStamp;
<WebService(Namespace:="https://www.contoso.com")> _ Public Class MyWebService ' Add a member variable of the type deriving from SoapHeader. Public TimeStamp As MyHeader
Wenden Sie ein SoapHeader-Attribut auf jede Webdienstmethode an, die den SOAP-Header verarbeiten soll. Legen Sie die MemberName-Eigenschaft des SoapHeader-Attributs auf den Namen der in Schritt 1 erstellten Membervariablen fest.
[WebMethod] [SoapHeader("timeStamp")] public void MyWebMethod()
<WebMethod, SoapHeader("TimeStamp")> _ Public Sub MyWebMethod()
Greifen Sie innerhalb der einzelnen Webdienstmethoden, auf die das SoapHeader-Attribut angewendet wird, auf die in Schritt 1 erstellte Membervariable zu, um die im SOAP-Header gesendeten Daten zu verarbeiten.
[WebMethod] [SoapHeader("myHeaderMemberVariable")] public string MyWebMethod() { // Verify that the client sent the SOAP Header. if (timeStamp == null) timeStamp = new MyHeader(); // Set the value of the SoapHeader returned to the client. timeStamp.Expires = 60000; timeStamp.Created = DateTime.UtcNow; return("Hello World!"); }
<WebMethod,SoapHeader("TimeStamp", _ Direction:=SoapHeaderDirection.InOut)> _ Public Function MyWebMethod() As String ' Process the SoapHeader. If (TimeStamp Is Nothing) Then TimeStamp = New MyHeader End If TimeStamp.Expires = 60000 TimeStamp.Created = DateTime.UtcNow Return "Hello World!" End Function
Beispiel
Das folgende Codebeispiel zeigt, wie ein SOAP-Header in einem mit ASP.NET erstellten Webdienst definiert und verarbeitet wird. Der Webdienst MyWebService
enthält eine Membervariable namens myHeaderMemberVariable
, deren Typ von SoapHeader (MyHeader
) abgeleitet ist und die auf die MemberName-Eigenschaft des SoapHeader-Attributs festgelegt ist. Außerdem wird ein SoapHeader-Attribut auf die Webdienstmethode MyWebMethod
angewendet, wobei myHeaderMemberVariable
angegeben wird. In der Webdienstmethode MyWebMethod
wird auf myHeaderMemberVariable
zugegriffen, um den Wert des XML-Elements Username
des SOAP-Headers abzurufen.
<%@ WebService Language="C#" Class="MyWebService" %>
using System.Web.Services;
using System.Web.Services.Protocols;
// Define a SOAP header by deriving from the SoapHeader class.
public class MyHeader : SoapHeader
{
public DateTime Created;
public long Expires;
}
[WebService(Namespace="https://www.contoso.com")]
public class MyWebService
{
// Add a member variable of the type deriving from SoapHeader.
public MyHeader myHeaderMemberVariable;
// Apply a SoapHeader attribute.
[WebMethod]
[SoapHeader("myHeaderMemberVariable")]
public void MyWebMethod()
{
// Process the SoapHeader.
if (myHeaderMemberVariable.Username == "admin")
{
// Do something interesting.
}
}
}
<%@ 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
' Add a member variable of the type deriving from SoapHeader.
Public myHeaderMemberVariable As MyHeader
' Apply a SoapHeader attribute.
<WebMethod, SoapHeader("myHeaderMemberVariable")> _
Public Sub MyWebMethod()
' Process the SoapHeader.
If (myHeaderMemberVariable.Username = "admin") Then
' Do something interesting.
End If
End Sub
End Class
Im vorstehenden Beispiel wird zusätzlicher Code ausgeführt, wenn die an MyWebMethod
gerichtete SOAP-Anforderung über einen SOAP-Header des Typs MyHeader
verfügt, in dem das UserName
-Element auf Admin
festgelegt ist. Das heißt, die folgende SOAP-Anforderung bewirkt, dass der Code ausgeführt wird.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<MyHeader xmlns="https://www.contoso.com">
<Created>dateTime</Created>
<Expires>long</Expires>
</MyHeader>
</soap:Header>
<soap:Body>
<MyWebMethod xmlns="https://www.contoso.com" />
</soap:Body>
</soap:Envelope>
Siehe auch
Referenz
SoapHeader
SoapHeaderAttribute
SoapUnknownHeader
SoapHeaderException
Konzepte
Erstellen von XML-Webdienstclients
Weitere Ressourcen
Verwenden von SOAP-Headern
XML-Webdienste, die ASP.NET verwenden
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.