MessageHeaderAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica que um membro de dados é um cabeçalho de mensagem 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
- Herança
- Derivado
- Atributos
Exemplos
O exemplo de código a seguir mostra o uso do MessageHeaderAttribute para criar um cabeçalho SOAP para a mensagem de resposta com as Namepropriedades e NamespaceMustUnderstand definidas como valores apropriados para esse cabeçalho. O exemplo de código é seguido por um exemplo da mensagem quando enviada.
[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
Comentários
O MessageHeaderAttribute atributo permite mapear campos e propriedades de um tipo marcado com o MessageContractAttribute atributo para cabeçalhos de mensagem SOAP. O campo ou a propriedade pode ser de um tipo simples ou de um tipo composto que pode ser serializado.
Para obter informações sobre como controlar a serialização do conteúdo de um corpo SOAP sem modificar o envelope SOAP padrão em si, consulte System.Runtime.Serialization.DataContractAttribute, Especificando transferência de dados em contratos de serviço e Usando contratos de dados.
Para obter mais informações sobre como criar contratos de mensagens, consulte Usando contratos de mensagem.
O padrão SOAP define os seguintes atributos que podem existir em um cabeçalho:
Actor
ouRole
(Actor
em SOAP 1.1,Role
em SOAP 1.2)MustUnderstand
Relay
O Actor
atributo ou Role
especifica o URI do nó para o qual um determinado cabeçalho se destina. O MustUnderstand
atributo especifica se o cabeçalho entende o processamento do nó. O atributo Relay
especifica se o cabeçalho deve ser retransmitido para os nós downstream. O WCF (Windows Communication Foundation) não executa nenhum processamento desses atributos em mensagens de entrada, exceto pelo MustUnderstand
atributo .
No entanto, você pode ler e gravar esses atributos, mesmo que eles não sejam enviados por padrão. Você pode definir os valores de atributo de duas maneiras. Primeiro, você pode alterar as Actorpropriedades e RelayMustUnderstand no MessageHeaderAttribute. (Não há nenhuma Role
propriedade – defina a Actor propriedade e Role
será passada se SOAP 1.2 for usado). Por exemplo:
A segunda maneira de controlar esses atributos é tornando o tipo de cabeçalho desejado o parâmetro de tipo da MessageHeader<T> classe e usando o tipo resultante junto com o MessageHeaderAttribute. Em seguida, use as MessageHeader<T> propriedades programaticamente para definir os atributos SOAP. Por exemplo:
Se os mecanismos de controle dinâmico e estático forem usados, as configurações estáticas serão o padrão, mas poderão ser substituídas usando o mecanismo dinâmico. Por exemplo:
A criação de cabeçalhos repetidos com controle de atributo dinâmico é permitida. Por exemplo:
[MessageHeaderArray] public MessageHeader<Person> documentApprovers[];
No lado receptor, a leitura desses atributos SOAP só poderá ser feita se a classe genérica MessageHeader<T> for usada. Examine as Actorpropriedades ou MustUnderstandRelay de um cabeçalho do MessageHeader<T> tipo para descobrir as configurações de atributo na mensagem recebida.
Quando uma mensagem é recebida e, em seguida, enviada de volta, o atributo SOAP configura apenas a ida e volta para cabeçalhos do MessageHeader<T> tipo.
Construtores
MessageHeaderAttribute() |
Inicializa uma nova instância da classe MessageHeaderAttribute. |
Propriedades
Actor |
Obtém ou define um URI que indica o nó ao qual este cabeçalho está direcionado. Mapeia para o atributo de cabeçalho de função quando o SOAP 1.2 é usado e o atributo de cabeçalho de ator quando o SOAP 1.1 é usado. |
HasProtectionLevel |
Quando substituída em uma classe derivada, obtém um valor que indica se o membro tem um nível de proteção atribuído. (Herdado de MessageContractMemberAttribute) |
MustUnderstand |
Especifica se o nó atuando na função Actor deve entender esse cabeçalho. Isso é mapeado para o atributo do cabeçalho SOAP |
Name |
Especifica o nome do elemento que corresponde a esse membro. (Herdado de MessageContractMemberAttribute) |
Namespace |
Especifica o namespace do elemento que corresponde a esse membro. (Herdado de MessageContractMemberAttribute) |
ProtectionLevel |
Especifica se o membro deve ser transmitido no estado em que se encontra, assinado ou assinado e criptografado. (Herdado de MessageContractMemberAttribute) |
Relay |
Especifica se esse cabeçalho deve ser retransmitido para nós a downstream. Isso é mapeado para o atributo do cabeçalho SOAP |
TypeId |
Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute) |
Métodos
Equals(Object) |
Retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
GetHashCode() |
Retorna o código hash para a instância. (Herdado de Attribute) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
IsDefaultAttribute() |
Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
Match(Object) |
Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição. (Herdado de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface. (Herdado de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |