MessageHeaderAttribute Clase

Definición

Especifica que un miembro de datos es un encabezado de mensaje SOAP.Specifies that a data member is a SOAP message header.

public ref class MessageHeaderAttribute : System::ServiceModel::MessageContractMemberAttribute
public 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, Inherited=false)]
public class MessageHeaderAttribute : System.ServiceModel.MessageContractMemberAttribute
type MessageHeaderAttribute = class
    inherit MessageContractMemberAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, AllowMultiple=false, Inherited=false)>]
type MessageHeaderAttribute = class
    inherit MessageContractMemberAttribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, 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.The following code example shows the use of the MessageHeaderAttribute to create a SOAP header for the response message with the Name, Namespace and MustUnderstand properties set to values appropriate for this header. El ejemplo de código está seguido por un ejemplo del mensaje cuando se envía.The code example is followed by an example of the message when sent.

 [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.The MessageHeaderAttribute attribute allows you to map fields and properties of a type marked with the MessageContractAttribute attribute to SOAP message headers. El campo o propiedad puede ser de un tipo simple o compuesto que se puede serializar.The field or property can be of a simple type or a composite type that can be serialized.

Para obtener información sobre cómo controlar la serialización del contenido de un cuerpo SOAP sin modificar el propio sobre de SOAP predeterminado, vea System.Runtime.Serialization.DataContractAttribute , especificar transferencia de datos en contratos de servicioy usar contratos de datos.For information on controlling the serialization of the contents of a SOAP body without modifying the default SOAP envelope itself, see System.Runtime.Serialization.DataContractAttribute, Specifying Data Transfer in Service Contracts, and Using Data Contracts.

Para obtener más información acerca de la creación de contratos de mensaje, consulte usar contratos de mensaje.For more information about creating message contracts, see Using Message Contracts.

El estándar de SOAP define los atributos siguientes que pueden existir en un encabezado:The SOAP standard defines the following attributes that can exist on a header:

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

  • MustUnderstand

  • Relay

El atributo Actor o Role especifica el URI del nodo pensado para un encabezado determinado.The Actor or Role attribute specifies the URI of the node for which a given header is intended. El atributo MustUnderstand especifica si el encabezado entiende el procesamiento de nodo.The MustUnderstand attribute specifies whether the header understands the node processing. El atributo Relay especifica si el encabezado se va a retransmitir a los nodos descendentes.The Relay attribute specifies whether the header is to be relayed to downstream nodes. Windows Communication Foundation (WCF) no realiza ningún procesamiento de estos atributos en los mensajes entrantes, salvo el MustUnderstand atributo.Windows Communication Foundation (WCF) does not perform any processing of these attributes on incoming messages, except for the MustUnderstand attribute.

Puede, sin embargo, leer y escribir estos atributos, aunque no se envían de forma predeterminada.You can, however, read and write these attributes, even though they are not sent by default. Puede definir los valores de atributo de dos maneras.You can set the attribute values in two ways. Primero, puede cambiar las propiedades Actor, MustUnderstand y Relay en MessageHeaderAttribute.First, you can change the Actor, MustUnderstand and Relay properties on the MessageHeaderAttribute. (No hay ninguna Role propiedad: establezca la Actor propiedad y Role se pasa si se utiliza SOAP 1,2).(There is no Role property - set the Actor property and Role is passed if SOAP 1.2 is used). Por ejemplo:For example:

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.The second way to control these attributes is by making the desired header type the type parameter of the MessageHeader<T> class and using the resulting type together with the MessageHeaderAttribute. A continuación, utilice las propiedades MessageHeader<T> mediante programación para establecer los atributos de SOAP.Then use the MessageHeader<T> properties programmatically to set the SOAP attributes. Por ejemplo:For example:

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.If both the dynamic and the static control mechanisms are used, the static settings are the default but can be overridden using the dynamic mechanism. Por ejemplo:For example:

Se permite la creación de encabezados repetidos con control dinámico de atributos.Creating repeated headers with dynamic attribute control is allowed. Por ejemplo:For example:

[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>.On the receiving side, reading these SOAP attributes can only be done if the generic MessageHeader<T> class is used. Examine las propiedades Actor, Relay o MustUnderstand de un encabezado del tipo MessageHeader<T> para detectar los valores de atributo en el mensaje recibido.Examine the Actor, Relay or MustUnderstand properties of a header of the MessageHeader<T> type to discover the attribute settings on the received message.

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>.When a message is received and then sent back, the SOAP attribute settings only roundtrip for headers of the MessageHeader<T> type.

Constructores

MessageHeaderAttribute()

Inicializa una nueva instancia de la clase MessageHeaderAttribute.Initializes a new instance of the MessageHeaderAttribute class.

Propiedades

Actor

Obtiene o establece un URI que indica el nodo al que se destina este encabezado.Gets or sets a URI that indicates the node at which this header is targeted. 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.Maps to the role header attribute when SOAP 1.2 is used and the actor header attribute when SOAP 1.1 is used.

HasProtectionLevel

Cuando se invalida en una clase derivada, obtiene un valor que indica si el miembro tiene un nivel de protección asignado.When overridden in a derived class, gets a value that indicates whether the member has a protection level assigned.

(Heredado de MessageContractMemberAttribute)
MustUnderstand

Especifica si el nodo que representa en la función Actor debe entender este encabezado.Specifies whether the node acting in the Actor role must understand this header. Se asigna al atributo de encabezado SOAP mustUnderstand.This is mapped to the mustUnderstand SOAP header attribute.

Name

Especifica el nombre del elemento que se corresponde a este miembro.Specifies the name of the element that corresponds to this member.

(Heredado de MessageContractMemberAttribute)
Namespace

Especifica el espacio de nombres del elemento que se corresponde a este miembro.Specifies the namespace of the element that corresponds to this member.

(Heredado de MessageContractMemberAttribute)
ProtectionLevel

Especifica si el miembro será transmitido tal cual, está firmado, o firmado y cifrado.Specifies whether the member is to be transmitted as-is, signed, or signed and encrypted.

(Heredado de MessageContractMemberAttribute)
Relay

Especifica si este encabezado será retransmitido a los nodos descendentes.Specifies whether this header is to be relayed to downstream nodes. Se asigna al atributo de encabezado SOAP relay.This is mapped to the relay SOAP header attribute.

TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

(Heredado de Attribute)
GetHashCode()

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

(Heredado de Attribute)
GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(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.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(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.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(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.Maps a set of names to a corresponding set of dispatch identifiers.

(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.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).Retrieves the number of type information interfaces that an object provides (either 0 or 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.Provides access to properties and methods exposed by an object.

(Heredado de Attribute)

Se aplica a