Partilhar via


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 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 ou Role (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 mustUnderstand.

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 relay.

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)

Aplica-se a