Freigeben über


MessageHeaderAttribute Klasse

Definition

Gibt an, dass ein Datenmember ein SOAP-Nachrichtenheader ist.

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
Vererbung
Abgeleitet
Attribute

Beispiele

Anhand des folgenden Codebeispiels wird veranschaulicht, wie MessageHeaderAttribute zum Erstellen eines SOAP-Headers für die Antwortnachricht mit den Eigenschaften Name, Namespace und MustUnderstand verwendet wird, für die für diesen Header geeignete Werte festgelegt wurden. Dem Codebeispiel folgt ein Beispiel der gesendeten Nachricht.

 [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

Hinweise

Das MessageHeaderAttribute-Attribut ermöglicht es, die Felder und Eigenschaften eines Typs, der mit dem MessageContractAttribute-Attribut gekennzeichnet ist, den SOAP-Nachrichtenheadern zuzuordnen. Das Feld oder die Eigenschaft kann ein einfacher oder zusammengesetzter Typ sein, der serialisiert werden kann.

Informationen zum Steuern der Serialisierung des Inhalts eines SOAP-Texts, ohne den Standard-SOAP-Umschlag selbst zu ändern, finden Sie unter System.Runtime.Serialization.DataContractAttribute, Angeben der Datenübertragung in Dienstverträgen und Verwenden von Datenverträgen.

Weitere Informationen zum Erstellen von Nachrichtenverträgen finden Sie unter Verwenden von Nachrichtenverträgen.

Der SOAP-Standard definiert die folgenden Attribute, die in einem Header verwendet werden können:

  • Actor oder Role (Actor in SOAP 1.1; Role in SOAP 1.2)

  • MustUnderstand

  • Relay

Das Actor-Attribut oder das Role-Attribut legt den URI des Knoten fest, für den ein bestimmter Header angegeben wurde. Das MustUnderstand-Attribut gibt an, ob der Header die Knotenverarbeitung versteht. Das Relay-Attribut gibt an, ob der Header an Downstreamknoten weitergeleitet werden soll. Windows Communication Foundation (WCF) führt keine Verarbeitung dieser Attribute für eingehende Nachrichten aus, mit Ausnahme des MustUnderstand Attributs.

Sie können jedoch diese Attribute lesen und schreiben, selbst wenn sie nicht standardmäßig gesendet werden. Sie können die Attributwerte auf zwei Weisen festlegen. Sie können zunächst die Eigenschaften Actor, MustUnderstand und Relay in MessageHeaderAttribute ändern. (Es gibt keine Role Eigenschaft – Legen Sie die Actor Eigenschaft fest und Role wird übergeben, wenn SOAP 1.2 verwendet wird). Beispiel:

Sie können diese Attribute jedoch auch steuern, indem Sie den gewünschten Headertyp als Typparameter der MessageHeader<T>-Klasse festlegen und den erstellten Typ zusammen mit MessageHeaderAttribute verwenden. Verwenden Sie dann die MessageHeader<T>-Eigenschaften, um die SOAP-Attribute programmgesteuert festzulegen. Beispiel:

Wenn sowohl der dynamische als auch der statische Kontrollmechanismus verwendet werden, sind standardmäßig die statischen Einstellungen ausgewählt, sie können jedoch mit dem dynamischen Mechanismus überschrieben werden. Beispiel:

Das Erstellen von wiederholten Headern mit einem dynamischen Attributsteuerelement ist zulässig. Beispiel:

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

Wenn Sie diese SOAP-Attribute auf Empfängerseite lesen möchten, muss die generische MessageHeader<T>-Klasse verwendet werden. Überprüfen Sie die Eigenschaften Actor, Relay oder MustUnderstand des Headers des MessageHeader<T>-Typs, um die Attributeinstellungen für die empfangene Nachricht anzuzeigen.

Wenn eine Nachricht empfangen und dann zurückgesendet wird, werden die SOAP-Attributeinstellungen nur für Header des MessageHeader<T>-Typs wiederhergestellt.

Konstruktoren

MessageHeaderAttribute()

Initialisiert eine neue Instanz der MessageHeaderAttribute-Klasse.

Eigenschaften

Actor

Ruft eine URI ab, der den Knoten angibt, der als Ziel dieses Headers festgelegt ist, oder legt sie fest. Erstellt eine Zuordnung zum Role-Header-Attribut, wenn SOAP&#160;1.2 verwendet wird, und zum Actor-Header-Attribut, wenn SOAP&#160;1.1 verwendet wird.

HasProtectionLevel

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob dem Member eine Schutzebene zugewiesen ist.

(Geerbt von MessageContractMemberAttribute)
MustUnderstand

Gibt an, ob der Knoten, der in der Actor-Rolle verwendet wird, diesen Header verstehen muss. Dies wird dem SOAP-Headerattribut mustUnderstand zugeordnet.

Name

Gibt den Namen des Elements an, das diesem Member entspricht.

(Geerbt von MessageContractMemberAttribute)
Namespace

Gibt den Namespace des Elements an, das diesem Member entspricht.

(Geerbt von MessageContractMemberAttribute)
ProtectionLevel

Gibt an, ob der Member unverändert, signiert oder signiert und verschlüsselt übertragen werden soll.

(Geerbt von MessageContractMemberAttribute)
Relay

Gibt an, ob dieser Header an Downstreamknoten weitergeleitet werden soll. Dies wird dem SOAP-Headerattribut relay zugeordnet.

TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

Gibt einen Wert zurück, der angibt, ob diese Instanz gleich einem angegebenen Objekt ist.

(Geerbt von Attribute)
GetHashCode()

Gibt den Hashcode für diese Instanz zurück.

(Geerbt von Attribute)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für