MessageHeaderAttribute Classe

Definição

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 seguinte mostra a utilização de para MessageHeaderAttribute criar um cabeçalho SOAP para a mensagem de resposta com o Name, Namespace e MustUnderstand propriedades definidas para valores apropriados para este cabeçalho. O exemplo do 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

Observações

O MessageHeaderAttribute atributo permite-lhe mapear campos e propriedades de um tipo marcado com o MessageContractAttribute atributo para cabeçalhos de mensagens SOAP. O corpo ou propriedade pode ser de um tipo simples ou de tipo composto que pode ser serializado.

Para informações sobre como controlar a serialização do conteúdo de um corpo SOAP sem modificar o envelope padrão do SOAP, veja System.Runtime.Serialization.DataContractAttribute, Especificando Transferência de Dados em Contratos de Serviço e Utilizando Contratos de Dados.

Para mais informações sobre a criação de contratos de mensagem, consulte Utilização de Contratos de Mensagem.

A norma SOAP define os seguintes atributos que podem existir num cabeçalho:

  • Actor ou Role (Actor em SOAP 1.1, Role em SOAP 1.2)

  • MustUnderstand

  • Relay

O atributo Actor or Role especifica o URI do nó para o qual um dado cabeçalho é destinado. O MustUnderstand atributo especifica se o cabeçalho compreende o processamento do nó. O Relay atributo especifica se o cabeçalho deve ser retransmitido para nós downstream. Windows Communication Foundation (WCF) não realiza qualquer processamento destes atributos nas mensagens recebidas, exceto para o atributo MustUnderstand.

No entanto, pode-se ler e escrever estes atributos, mesmo que não sejam enviados por defeito. Podes definir os valores dos atributos de duas formas. Primeiro, pode-se alterar as Actorpropriedades , MustUnderstand e Relay sobre .MessageHeaderAttribute (Não existe propriedade Role – define a Actor propriedade e Role é passada se for usada a SOAP 1.2). Por exemplo:

A segunda forma de controlar estes atributos é tornando o tipo de cabeçalho desejado o parâmetro de tipo da MessageHeader<T> classe e usando o tipo resultante juntamente com o MessageHeaderAttribute. Depois usa as MessageHeader<T> propriedades programaticamente para definir os atributos SOAP. Por exemplo:

Se forem usados tanto os mecanismos de controlo dinâmico como o estático, as definições estáticas são o padrão, mas podem ser ultrapassadas usando o mecanismo dinâmico. Por exemplo:

É permitido criar cabeçalhos repetidos com controlo dinâmico de atributos. Por exemplo:

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

No lado receptor, a leitura destes atributos SOAP só pode ser feita se for usada a classe genérica MessageHeader<T> . Examine o Actor, Relay ou MustUnderstand as propriedades de um cabeçalho do MessageHeader<T> tipo para descobrir as definições de atributos na mensagem recebida.

Quando uma mensagem é recebida e depois enviada de volta, as definições do atributo SOAP apenas fazem ida e volta para cabeçalhos desse MessageHeader<T> tipo.

Construtores

Name Description
MessageHeaderAttribute()

Inicializa uma nova instância da MessageHeaderAttribute classe.

Propriedades

Name Description
Actor

Recebe ou define um URI que indica o nó para onde este cabeçalho está direcionado. Mapeia para o atributo do cabeçalho de papel quando o SOAP 1.2 é usado e para o atributo do cabeçalho do ator quando o SOAP 1.1 é utilizado.

HasProtectionLevel

Quando anulado numa 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ó que desempenha a Actor função deve compreender este cabeçalho. Isto é mapeado para o mustUnderstand atributo do cabeçalho SOAP.

Name

Especifica o nome do elemento que corresponde a este elemento.

(Herdado de MessageContractMemberAttribute)
Namespace

Especifica o espaço de nomes do elemento correspondente a este membro.

(Herdado de MessageContractMemberAttribute)
ProtectionLevel

Especifica se o membro deve ser transmitido as-is, assinado, ou assinado e encriptado.

(Herdado de MessageContractMemberAttribute)
Relay

Especifica se este cabeçalho deve ser retransmitido para nós a jusante. Isto é mapeado para o relay atributo do cabeçalho SOAP.

TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Description
Equals(Object)

Devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
GetHashCode()

Devolve o código de hash para esta instância.

(Herdado de Attribute)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

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

Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

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

Proporciona acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a