MessageHeaderAttribute Classe

Définition

Spécifie qu'un membre de données est un en-tête de message 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, 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
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Property, Inherited=false)>]
type MessageHeaderAttribute = class
    inherit MessageContractMemberAttribute
Public Class MessageHeaderAttribute
Inherits MessageContractMemberAttribute
Héritage
Dérivé
Attributs

Exemples

Le code d'exemple suivant illustre l'utilisation de l'MessageHeaderAttribute pour créer un en-tête SOAP pour le message de réponse avec les propriétés Name, Namespace et MustUnderstand définies à des valeurs appropriées pour cet en-tête. L'exemple de code est suivi d'un exemple du message à son envoi.

 [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

Remarques

L'attribut MessageHeaderAttribute vous permet de mapper les champs et les propriétés d'un type marqué à l'aide de l'attribut MessageContractAttribute aux en-têtes de message SOAP. Le champ ou la propriété peut être d'un type simple ou d'un type composite qui peut être sérialisé.

Pour plus d’informations sur le contrôle de la sérialisation du contenu d’un corps SOAP sans modifier l’enveloppe SOAP par défaut, consultez System.Runtime.Serialization.DataContractAttribute, Spécification du transfert de données dans les contrats de service et utilisation de contrats de données.

Pour plus d’informations sur la création de contrats de message, consultez Utilisation des contrats de message.

La norme SOAP définit les attributs suivants qui peuvent exister dans un en-tête :

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

  • MustUnderstand

  • Relay

L'attribut Actor ou Role spécifie l'URI du nœud pour lequel un en-tête donné est prévu. L'attribut MustUnderstand spécifie si l'en-tête comprend le traitement du nœud. L'attribut Relay spécifie si l'en-tête sera relayé aux nœuds en aval. Windows Communication Foundation (WCF) n’effectue aucun traitement de ces attributs sur les messages entrants, sauf pour l’attributMustUnderstand.

Vous pouvez toutefois lire et écrire ces attributs, même s'ils ne sont pas envoyés par défaut. Vous pouvez définir les valeurs d'attribut de deux manières. Vous pouvez d'abord modifier les propriétés Actor, MustUnderstand et Relay sur l'MessageHeaderAttribute. (Il n’existe aucune Role propriété - définissez la Actor propriété et Role est passée si SOAP 1.2 est utilisé). Exemple :

La deuxième méthode pour contrôler ces attributs est de passer type d’en-tête souhaité comme paramètre de type de la classe MessageHeader<T> et à d’utiliser le type résultant avec l’MessageHeaderAttribute. Utilisez ensuite par programmation les propriétés MessageHeader<T> pour définir les attributs SOAP. Exemple :

Si les mécanismes de vérification statiques et dynamiques sont utilisés, les paramètres statiques sont définis par défaut mais peuvent être substitués à l'aide du mécanisme dynamique. Exemple :

La création d'en-tête répétés avec vérification dynamique des attributs est autorisée. Exemple :

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

Côté réception, la lecture de ces attributs SOAP peut être faite uniquement si la classe MessageHeader<T> générique est utilisée. Examinez les propriétés Actor, Relay ou MustUnderstand d'un en-tête de type MessageHeader<T> pour découvrir les paramètres d'attribut du message reçu.

Lorsqu'un message est reçu puis renvoyé, les paramètres d'attribut SOAP font l'aller-retour uniquement pour les en-têtes de type MessageHeader<T>.

Constructeurs

MessageHeaderAttribute()

Initialise une nouvelle instance de la classe MessageHeaderAttribute.

Propriétés

Actor

Obtient ou définit un URI qui indique le noeud ciblé par cet en-tête. Mappe vers l'attribut d'en-tête Role lorsque SOAP 1.2 est utilisé et l'attribut d'en-tête Actor lorsque SOAP 1.1 est utilisé.

HasProtectionLevel

En cas de substitution dans une classe dérivée, obtient une valeur qui indique si un niveau de protection est assigné au membre.

(Hérité de MessageContractMemberAttribute)
MustUnderstand

Spécifie si le nœud agissant dans le rôle Actor doit comprendre cet en-tête. Il est mappé vers l'attribut d'en-tête SOAP mustUnderstand.

Name

Spécifie le nom de l'élément qui correspond à ce membre.

(Hérité de MessageContractMemberAttribute)
Namespace

Spécifie l'espace de noms de l'élément qui correspond à ce membre.

(Hérité de MessageContractMemberAttribute)
ProtectionLevel

Spécifie si le membre doit être transmis tel quel, signé ou signé et chiffré.

(Hérité de MessageContractMemberAttribute)
Relay

Spécifie si cet en-tête sera relayé aux nœuds en aval. Il est mappé vers l'attribut d'en-tête SOAP relay.

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)

Méthodes

Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage de cette instance.

(Hérité de Attribute)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l'accès aux propriétés et aux méthodes exposées par un objet.

(Hérité de Attribute)

S’applique à