MessageHeaderAttribute Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
oRole
(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 |
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 |
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) |