Cómo: Cambiar destinatarios de un encabezado SOAP
Este tema es específico de una tecnología heredada. Ahora, los servicios Web XML y los clientes de servicios Web XML deben crearse con Windows Communication Foundation.
Ejemplo de código
De forma predeterminada, un cliente de servicios Web envía encabezados SOAP a un método de servicio Web cuando se aplica un atributo SoapHeader a un método de servicio Web. No obstante, el método de servicio Web también puede devolver un encabezado SOAP al cliente del servicio Web. También se puede enviar de las dos formas. Al establecer la propiedad Direction de un atributo SoapHeader aplicado a un método de servicio Web se controla el destinatario del encabezado SOAP. La propiedad Direction es de tipo SoapHeaderDirection, que tiene cuatro valores: In, Out, InOuty Fault. Éstos hacen referencia al destinatario (si es el servidor del servicio Web), al cliente o al servidor del servicio Web y al cliente, y si el encabezado SOAP se envía al cliente cuando el servicio Web inicia una excepción.
Nota: la versión 1.0 de .NET Framework SDK no admite el valor Fault.
Para cambiar el destinatario del encabezado SOAP
Defina el encabezado SOAP.
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
Agregue una variable miembro a la clase que implementa el servicio Web .
[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
Aplique un atributo SoapHeader a cada método de servicio Web que procesa el encabezado SOAP. Establezca la propiedad Direction en cada destinatario previsto, mediante la enumeración SoapHeaderDirection. El ejemplo siguiente define el cliente del servicio Web como destinatario estableciendo Direction en SoapHeaderDirection.Out.
[WebMethod] [SoapHeader("myOutHeader",Direction=SoapHeaderDirection.Out)]
<WebMethod, _ SoapHeader("myOutHeader",Direction:=SoapHeaderDirection.Out)>
Procese o establezca el encabezado SOAP, dependiendo del destinatario. El ejemplo de código siguiente establece los valores del encabezado SOAP, cuando el destinatario es el cliente del servicio Web.
// Return the client's authenticated name. myOutHeader.Username = User.Identity.Name;
' Return the client's authenticated name. myOutHeader.Username = User.Identity.Name
Ejemplo
El ejemplo de código siguiente define un encabezado SOAP MyHeader
que se envía del método de servicio Web al cliente.
<%@ 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
Vea también
Referencia
SoapHeader
SoapHeaderAttribute
SoapUnknownHeader
SoapHeaderException
Conceptos
Generar clientes de servicios web XML