Cuando se reemplaza en una clase derivada, representa el contenido de un encabezado SOAP.
Espacio de nombres: System.Web.Services.Protocols
Ensamblado: System.Web.Services (en system.web.services.dll)
Visual Basic (Declaración)
Public MustInherit Class SoapHeader
Dim instance As SoapHeader
public abstract class SoapHeader
public ref class SoapHeader abstract
public abstract class SoapHeader
public abstract class SoapHeader
Los encabezados SOAP proporcionan un método para pasar datos a un método de servicios Web XML y obtener datos del mismo, siempre y cuando los datos no estén directamente relacionados con la funcionalidad principal del método de servicios Web XML. Por ejemplo, un servicio Web XML puede contener varios métodos de servicios Web XML, cada uno de los cuales puede requerir un esquema de autenticación personalizado. En lugar de agregar parámetros a cada método de servicios Web XML para el esquema de autenticación personalizado, a cada método de servicios Web XML se le puede aplicar SoapHeaderAttribute, que hace referencia a una clase derivada de SoapHeader. La implementación de la clase derivada de SoapHeader controla el esquema de autenticación personalizado. De este modo, el método de servicios Web XML sólo implementa la funcionalidad específica del método y agrega funcionalidades adicionales utilizando un encabezado SOAP.
En la siguiente lista se describen los pasos básicos que hay que llevar a cabo para recibir y procesar un encabezado SOAP:
-
Cree una clase derivada de SoapHeader que represente los datos pasados al encabezado SOAP.
-
Agregue un miembro a la clase que implementa un servicio Web XML o una clase de proxy cliente de servicios Web XML; el miembro debe ser del mismo tipo que el creado en el primer paso.
-
Aplique SoapHeaderAttribute al método de servicios Web XML o al método correspondiente de la clase de proxy, especificando el miembro creado en el segundo paso en la propiedad MemberName.
-
Dentro del método de servicios Web XML o del código de cliente de servicios Web XML, obtenga acceso a la propiedad MemberName para procesar los datos enviados en el encabezado SOAP.
El siguiente servicio Web XML MyWebService define el encabezado SOAP MyHeader y precisa que éste se envíe en todas las llamadas al método de servicio Web XML MyWebMethod. Además, MyWebMethod recibe cualquier encabezado SOAP distinto del encabezado SOAP 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";
}
}
System.Object
System.Web.Services.Protocols.SoapHeader
System.Web.Services.Protocols.SoapUnknownHeader
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.
.NET Framework
Compatible con: 3.0, 2.0, 1.1, 1.0
.NET Compact Framework
Compatible con: 2.0, 1.0