Udostępnij za pośrednictwem


MessageHeaderAttribute Klasa

Definicja

Określa, że element członkowski danych jest nagłówkiem komunikatu PROTOKOŁU 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
Dziedziczenie
Pochodne
Atrybuty

Przykłady

Poniższy przykład kodu przedstawia użycie elementu MessageHeaderAttribute , aby utworzyć nagłówek PROTOKOŁU SOAP dla komunikatu odpowiedzi z właściwościami Namei MustUnderstandNamespace ustawionymi na wartości odpowiednie dla tego nagłówka. Po przykładzie kodu następuje przykład komunikatu po wysłaniu.

 [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

Uwagi

Atrybut MessageHeaderAttribute umożliwia mapowanie pól i właściwości typu oznaczonego atrybutem MessageContractAttribute na nagłówki komunikatów PROTOKOŁU SOAP. Pole lub właściwość może być typu prostego lub złożonego, który można serializować.

Aby uzyskać informacje na temat kontrolowania serializacji zawartości treści protokołu SOAP bez modyfikowania domyślnej koperty protokołu SOAP, zobacz System.Runtime.Serialization.DataContractAttribute, Określanie transferu danych w kontraktach usług i Używanie kontraktów danych.

Aby uzyskać więcej informacji na temat tworzenia kontraktów komunikatów, zobacz Using Message Contracts (Używanie kontraktów komunikatów).

Standard PROTOKOŁU SOAP definiuje następujące atrybuty, które mogą istnieć w nagłówku:

  • Actor or Role (Actor w soap 1.1, Role w SOAP 1.2)

  • MustUnderstand

  • Relay

Atrybut Actor or Role określa identyfikator URI węzła, dla którego ma być przeznaczony dany nagłówek. Atrybut MustUnderstand określa, czy nagłówek rozumie przetwarzanie węzła. Atrybut Relay określa, czy nagłówek ma być przekazywany do węzłów podrzędnych. Program Windows Communication Foundation (WCF) nie wykonuje żadnego przetwarzania tych atrybutów w komunikatach przychodzących, z wyjątkiem atrybutu MustUnderstand .

Można jednak odczytywać i zapisywać te atrybuty, mimo że nie są one wysyłane domyślnie. Wartości atrybutów można ustawić na dwa sposoby. Najpierw można zmienić ActorMustUnderstand właściwości , i Relay w obiekcie MessageHeaderAttribute. (Nie ma Role właściwości — ustaw Actor właściwość i Role jest przekazywana, jeśli jest używany soap 1.2). Przykład:

Drugim sposobem kontrolowania tych atrybutów jest wprowadzenie żądanego typu nagłówka parametru MessageHeader<T> typu klasy i użycie wynikowego typu razem z MessageHeaderAttribute. Następnie użyj MessageHeader<T> właściwości programowo, aby ustawić atrybuty protokołu SOAP. Przykład:

Jeśli są używane zarówno mechanizmy dynamiczne, jak i statyczne mechanizmy sterowania, ustawienia statyczne są domyślne, ale można je przesłonić przy użyciu mechanizmu dynamicznego. Przykład:

Tworzenie powtarzających się nagłówków z kontrolką atrybutów dynamicznych jest dozwolone. Przykład:

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

Po stronie odbierania odczytywanie tych atrybutów protokołu SOAP można wykonać tylko wtedy, gdy jest używana klasa ogólna MessageHeader<T> . ActorSprawdź właściwości lub RelayMustUnderstand nagłówka MessageHeader<T> typu, aby odnaleźć ustawienia atrybutu w odebranym komunikacie.

Po odebraniu komunikatu, a następnie wysłaniu z powrotem, ustawienia atrybutu PROTOKOŁU SOAP tylko w przypadku nagłówków MessageHeader<T> typu.

Konstruktory

MessageHeaderAttribute()

Inicjuje nowe wystąpienie klasy MessageHeaderAttribute.

Właściwości

Actor

Pobiera lub ustawia identyfikator URI wskazujący węzeł, w którym jest przeznaczony ten nagłówek. Mapuje atrybut nagłówka roli, gdy jest używany soap 1.2 i atrybut nagłówka aktora, gdy jest używany soap 1.1.

HasProtectionLevel

Po przesłonięciu w klasie pochodnej pobiera wartość wskazującą, czy element członkowski ma przypisany poziom ochrony.

(Odziedziczone po MessageContractMemberAttribute)
MustUnderstand

Określa, czy węzeł działający w Actor roli musi rozumieć ten nagłówek. Jest to mapowane na atrybut nagłówka mustUnderstand protokołu SOAP.

Name

Określa nazwę elementu, który odpowiada temu członkowi.

(Odziedziczone po MessageContractMemberAttribute)
Namespace

Określa przestrzeń nazw elementu, który odpowiada temu członkowi.

(Odziedziczone po MessageContractMemberAttribute)
ProtectionLevel

Określa, czy element członkowski ma być przesyłany jako, podpisany, czy podpisany i zaszyfrowany.

(Odziedziczone po MessageContractMemberAttribute)
Relay

Określa, czy ten nagłówek ma być przekazywany do węzłów podrzędnych. Jest to mapowane na atrybut nagłówka relay protokołu SOAP.

TypeId

Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu .

(Odziedziczone po Attribute)

Metody

Equals(Object)

Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi.

(Odziedziczone po Attribute)
GetHashCode()

Zwraca wartość skrótu dla tego wystąpienia.

(Odziedziczone po Attribute)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsDefaultAttribute()

Podczas zastępowania w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej.

(Odziedziczone po Attribute)
Match(Object)

Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi.

(Odziedziczone po Attribute)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

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

Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu.

(Odziedziczone po Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1).

(Odziedziczone po Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt.

(Odziedziczone po Attribute)

Dotyczy