Partager via


MessageHeaderAttribute.MustUnderstand Propriété

Définition

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.

public:
 property bool MustUnderstand { bool get(); void set(bool value); };
public bool MustUnderstand { get; set; }
member this.MustUnderstand : bool with get, set
Public Property MustUnderstand As Boolean

Valeur de propriété

true si le nœud ayant le rôle Actor doit comprendre cet en-tête ; sinon, false.

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

Pour plus de détails, consultez la section Notes de MessageHeaderAttribute.

Important

Il faut se souvenir qu'une erreur est générée si la propriété MustUnderstand a la valeur true dans un message en cours d'envoi et que l'application côté réception ne comprend pas l'en-tête. À l’inverse, si un en-tête avec l’attribut mustUnderstand d’en-tête SOAP défini true sur est reçu par Windows Communication Foundation (WCF), il doit faire partie du contrat de message (ou doit être traité par l’un des canaux Windows Communication Foundation (WCF) ; sinon, il est supposé que l’en-tête n’est pas compris et qu’une exception est levée.

S’applique à