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
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
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
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)>
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
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.