MessageHeaderAttribute Clase

Definición

Especifica que un miembro de datos es un encabezado de mensaje SOAP.

public ref class MessageHeaderAttribute : System::ServiceModel::MessageContractMemberAttribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)]
public class MessageHeaderAttribute : System.ServiceModel.MessageContractMemberAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)>]
type MessageHeaderAttribute = class
    inherit MessageContractMemberAttribute
Public Class MessageHeaderAttribute
Inherits MessageContractMemberAttribute
Herencia
Derivado
Atributos

Ejemplos

El siguiente ejemplo de código muestra el uso de MessageHeaderAttribute para crear un encabezado SOAP para el mensaje de respuesta con las propiedades Name, Namespace y MustUnderstand establecidas con valores adecuados para este encabezado. El ejemplo de código está seguido por un ejemplo del mensaje cuando se envía.

 [MessageContract]
 public class HelloResponseMessage
 {
   private string localResponse = String.Empty;
   private string extra = String.Empty;

   [MessageBodyMember(
     Name = "ResponseToGreeting",
     Namespace = "http://www.examples.com")]
   public string Response
   {
     get { return localResponse; }
     set { localResponse = value; }
   }

   [MessageHeader(
     Name = "OutOfBandData",
     Namespace = "http://www.examples.com",
     MustUnderstand=true
   )]
   public string ExtraValues
   {
     get { return extra; }
     set { this.extra = value; }
  }

  /*
   The following is the response message, edited for clarity.

   <s:Envelope>
     <s:Header>
       <a:Action s:mustUnderstand="1">http://HelloResponseMessage/Action</a:Action>
       <h:OutOfBandData s:mustUnderstand="1" xmlns:h="http://www.examples.com">Served by object 13804354.</h:OutOfBandData>
     </s:Header>
     <s:Body>
       <HelloResponseMessage xmlns="Microsoft.WCF.Documentation">
         <ResponseToGreeting xmlns="http://www.examples.com">Service received: Hello.</ResponseToGreeting>
       </HelloResponseMessage>
     </s:Body>
   </s:Envelope>
   */
}
  <MessageContract> _
  Public Class HelloResponseMessage
    Private localResponse As String = String.Empty
    Private extra As String = String.Empty

    <MessageBodyMember(Name := "ResponseToGreeting", Namespace := "http://www.examples.com")> _
    Public Property Response() As String
      Get
          Return localResponse
      End Get
      Set(ByVal value As String)
          localResponse = value
      End Set
    End Property

    <MessageHeader(Name := "OutOfBandData", Namespace := "http://www.examples.com", MustUnderstand:=True)> _
    Public Property ExtraValues() As String
      Get
          Return extra
      End Get
      Set(ByVal value As String)
          Me.extra = value
      End Set
    End Property

'   
'    The following is the response message, edited for clarity.
'    
'    <s:Envelope>
'      <s:Header>
'        <a:Action s:mustUnderstand="1">http://HelloResponseMessage/Action</a:Action>
'        <h:OutOfBandData s:mustUnderstand="1" xmlns:h="http://www.examples.com">Served by object 13804354.</h:OutOfBandData>
'      </s:Header>
'      <s:Body>
'        <HelloResponseMessage xmlns="Microsoft.WCF.Documentation">
'          <ResponseToGreeting xmlns="http://www.examples.com">Service received: Hello.</ResponseToGreeting>
'      </s:Body>    
'    </s:Envelope>
'    
  End Class

Comentarios

El atributo MessageHeaderAttribute le permite asignar campos y propiedades de un tipo marcados con el atributo MessageContractAttribute en los encabezados del mensaje SOAP. El campo o propiedad puede ser de un tipo simple o compuesto que se puede serializar.

Para obtener información sobre cómo controlar la serialización del contenido de un cuerpo SOAP sin modificar el propio sobre SOAP predeterminado, vea System.Runtime.Serialization.DataContractAttribute, Especificar transferencia de datos en contratos de servicio y Usar contratos de datos.

Para obtener más información sobre la creación de contratos de mensajes, vea Uso de contratos de mensajes.

El estándar de SOAP define los atributos siguientes que pueden existir en un encabezado:

  • Actor o Role (Actor en SOAP 1.1, Role en SOAP 1.2)

  • MustUnderstand

  • Relay

El atributo Actor o Role especifica el URI del nodo pensado para un encabezado determinado. El atributo MustUnderstand especifica si el encabezado entiende el procesamiento de nodo. El atributo Relay especifica si el encabezado se va a retransmitir a los nodos descendentes. Windows Communication Foundation (WCF) no realiza ningún procesamiento de estos atributos en los mensajes entrantes, excepto el MustUnderstand atributo .

Puede, sin embargo, leer y escribir estos atributos, aunque no se envían de forma predeterminada. Puede definir los valores de atributo de dos maneras. Primero, puede cambiar las propiedades Actor, MustUnderstand y Relay en MessageHeaderAttribute. (No hay ninguna Role propiedad : establezca la Actor propiedad y Role se pasa si se usa SOAP 1.2). Por ejemplo:

La segunda manera de controlar estos atributos es convertir el tipo de encabezado deseado en el parámetro de tipo de la clase MessageHeader<T> y utilizar el tipo resultante junto con MessageHeaderAttribute. A continuación, utilice las propiedades MessageHeader<T> mediante programación para establecer los atributos de SOAP. Por ejemplo:

Si se utilizan ambos mecanismos de control dinámico y estático, los valores estáticos son los predeterminados pero pueden sobrescribirse mediante el mecanismo dinámico. Por ejemplo:

Se permite la creación de encabezados repetidos con control dinámico de atributos. Por ejemplo:

[MessageHeaderArray] public MessageHeader<Person> documentApprovers[];  

En el lado receptor, sólo se pueden leer estos atributos de SOAP si se utiliza la clase genérica MessageHeader<T>. Examine las propiedades Actor, Relay o MustUnderstand de un encabezado del tipo MessageHeader<T> para detectar los valores de atributo en el mensaje recibido.

Cuando se recibe un mensaje y después se devuelve, los valores de atributo de SOAP sólo son de ida y vuelta para encabezados de tipo MessageHeader<T>.

Constructores

MessageHeaderAttribute()

Inicializa una nueva instancia de la clase MessageHeaderAttribute.

Propiedades

Actor

Obtiene o establece un URI que indica el nodo al que se destina este encabezado. Asigna al atributo de encabezado de rol cuando se utiliza SOAP 1.2 y el atributo de encabezado de actor cuando se emplea SOAP 1.1.

HasProtectionLevel

Cuando se invalida en una clase derivada, obtiene un valor que indica si el miembro tiene un nivel de protección asignado.

(Heredado de MessageContractMemberAttribute)
MustUnderstand

Especifica si el nodo que representa en la función Actor debe entender este encabezado. Se asigna al atributo de encabezado SOAP mustUnderstand.

Name

Especifica el nombre del elemento que se corresponde a este miembro.

(Heredado de MessageContractMemberAttribute)
Namespace

Especifica el espacio de nombres del elemento que se corresponde a este miembro.

(Heredado de MessageContractMemberAttribute)
ProtectionLevel

Especifica si el miembro será transmitido tal cual, está firmado, o firmado y cifrado.

(Heredado de MessageContractMemberAttribute)
Relay

Especifica si este encabezado será retransmitido a los nodos descendentes. Se asigna al atributo de encabezado SOAP relay.

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(Heredado de Attribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.

(Heredado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).

(Heredado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.

(Heredado de Attribute)

Se aplica a