MessageHeaderAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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, AllowMultiple=false, Inherited=false)>]
type MessageHeaderAttribute = class
inherit MessageContractMemberAttribute
Public Class MessageHeaderAttribute
Inherits MessageContractMemberAttribute
- Héritage
- Dérivé
- Attributs
Exemples
L’exemple de code suivant montre l’utilisation de l’en-tête MessageHeaderAttribute SOAP pour le message de réponse avec les NameNamespaceMustUnderstand propriétés définies sur les valeurs appropriées pour cet en-tête. L’exemple de code est suivi d’un exemple de message lorsqu’il est envoyé.
[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 des champs et des propriétés d’un type marqué avec 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 elle-même, 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 sur un en-tête :
ActorouRole(Actordans SOAP 1.1,Roledans SOAP 1.2)MustUnderstandRelay
L’attribut Actor ou Role spécifie l’URI du nœud pour lequel un en-tête donné est destiné. 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, à l’exception de l’attribut MustUnderstand .
Toutefois, vous pouvez 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 façons. Tout d’abord, vous pouvez modifier les propriétés et Relay les ActorMustUnderstand propriétés sur le 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é). Par exemple:
La deuxième façon de contrôler ces attributs consiste à rendre le type d’en-tête souhaité le paramètre de type de la MessageHeader<T> classe et à utiliser le type résultant avec le MessageHeaderAttribute. Utilisez ensuite les MessageHeader<T> propriétés par programmation pour définir les attributs SOAP. Par exemple:
Si les mécanismes de contrôle dynamique et statique sont utilisés, les paramètres statiques sont la valeur par défaut, mais peuvent être substitués à l’aide du mécanisme dynamique. Par exemple:
La création d’en-têtes répétés avec le contrôle d’attribut dynamique est autorisée. Par exemple:
[MessageHeaderArray] public MessageHeader<Person> documentApprovers[];
Côté réception, la lecture de ces attributs SOAP ne peut être effectuée que si la classe générique MessageHeader<T> est utilisée. Examinez le Actorou MustUnderstandRelay les propriétés d’un en-tête du MessageHeader<T> type pour découvrir les paramètres d’attribut sur le message reçu.
Lorsqu’un message est reçu, puis renvoyé, les paramètres d’attribut SOAP sont uniquement aller-retour pour les en-têtes du MessageHeader<T> type.
Constructeurs
| Nom | Description |
|---|---|
| MessageHeaderAttribute() |
Initialise une nouvelle instance de la classe MessageHeaderAttribute. |
Propriétés
| Nom | Description |
|---|---|
| Actor |
Obtient ou définit un URI qui indique le nœud auquel cet en-tête est ciblé. Mappe à l’attribut d’en-tête de rôle lorsque SOAP 1.2 est utilisé et l’attribut d’en-tête d’acteur lorsque SOAP 1.1 est utilisé. |
| HasProtectionLevel |
En cas de substitution dans une classe dérivée, obtient une valeur qui indique si le membre a un niveau de protection affecté. (Hérité de MessageContractMemberAttribute) |
| MustUnderstand |
Spécifie si le nœud agissant dans le Actor rôle doit comprendre cet en-tête. Il est mappé à l’attribut d’en-tête |
| 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 as-is, signé ou signé et chiffré. (Hérité de MessageContractMemberAttribute) |
| Relay |
Spécifie si cet en-tête doit être relayé vers des nœuds en aval. Il est mappé à l’attribut d’en-tête |
| TypeId |
En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute. (Hérité de Attribute) |
Méthodes
| Nom | Description |
|---|---|
| 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 pour cette instance. (Hérité de Attribute) |
| GetType() |
Obtient la 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 de la classe dérivée. (Hérité de Attribute) |
| Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| _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 d’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 méthodes exposées par un objet. (Hérité de Attribute) |