Sdílet prostřednictvím


MessageHeaderAttribute Třída

Definice

Určuje, že datový člen je záhlaví zprávy 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
Dědičnost
Odvozené
Atributy

Příklady

Následující příklad kódu ukazuje použití k vytvoření hlavičky MessageHeaderAttribute SOAP pro zprávu odpovědi se zprávou NameNamespace a MustUnderstand vlastnosti nastavené na hodnoty vhodné pro tuto hlavičku. Po příkladu kódu následuje příklad zprávy při odeslání.

 [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

Poznámky

Atribut MessageHeaderAttribute umožňuje mapovat pole a vlastnosti typu označeného atributem MessageContractAttribute na hlavičky zprávy SOAP. Pole nebo vlastnost mohou být jednoduchého typu nebo složeného typu, který lze serializovat.

Informace o řízení serializace obsahu těla SOAP bez úpravy výchozí obálky SOAP samotné, viz System.Runtime.Serialization.DataContractAttribute, Určení přenosu dat v kontraktech služeb a použití kontraktů dat.

Další informace o vytváření kontraktů zpráv naleznete v tématu Použití kontraktů zpráv.

Standard SOAP definuje následující atributy, které mohou existovat v hlavičce:

  • Actor nebo Role (Actor v protokolu SOAP 1.1, Role v protokolu SOAP 1.2)

  • MustUnderstand

  • Relay

Atribut Actor určuje Role identifikátor URI uzlu, pro který je daná hlavička určena. Atribut MustUnderstand určuje, jestli hlavička rozumí zpracování uzlu. Atribut Relay určuje, jestli má být hlavička předána podřízeným uzlům. Windows Communication Foundation (WCF) neprovádí žádné zpracování těchto atributů u příchozích zpráv s výjimkou atributu MustUnderstand .

Tyto atributy ale můžete číst a zapisovat, i když se ve výchozím nastavení neodesílají. Hodnoty atributů můžete nastavit dvěma způsoby. Nejprve můžete změnit ActorMustUnderstand vlastnosti a vlastnosti Relay v objektu MessageHeaderAttribute. (Neexistuje žádná Role vlastnost – nastavte Actor vlastnost a Role předává se, pokud se používá protokol SOAP 1.2). Například:

Druhým způsobem řízení těchto atributů je vytvoření požadovaného typu hlavičky parametr MessageHeader<T> typu třídy a použití výsledného typu společně s MessageHeaderAttribute. Vlastnosti pak použijte MessageHeader<T> programově k nastavení atributů SOAP. Například:

Pokud se použijí dynamické mechanismy i mechanismy statického řízení, jsou statická nastavení výchozí, ale lze je přepsat pomocí dynamického mechanismu. Například:

Vytváření opakovaných hlaviček s dynamickým ovládacím prvkem atributů je povoleno. Například:

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

Na straně příjmu lze čtení těchto atributů SOAP provést pouze v případě, že je použita obecná MessageHeader<T> třída. Actor Relay Zkontrolujte nebo MustUnderstand vlastnosti hlavičky MessageHeader<T> typu a zjistěte nastavení atributu v přijaté zprávě.

Při přijetí a následném odeslání zprávy se nastavení atributu SOAP pouze zaokrouhluje pro hlavičky MessageHeader<T> typu.

Konstruktory

Name Description
MessageHeaderAttribute()

Inicializuje novou instanci MessageHeaderAttribute třídy.

Vlastnosti

Name Description
Actor

Získá nebo nastaví identifikátor URI, který označuje uzel, na který je tato hlavička cílem. Při použití protokolu SOAP 1.2 se mapuje na atribut hlavičky role a atribut hlavičky objektu actor při použití protokolu SOAP 1.1.

HasProtectionLevel

Při přepsání v odvozené třídě získá hodnotu, která označuje, zda člen má přiřazenou úroveň ochrany.

(Zděděno od MessageContractMemberAttribute)
MustUnderstand

Určuje, jestli uzel fungující v Actor roli musí porozumět této hlavičce. To je namapováno na atribut hlavičky mustUnderstand SOAP.

Name

Určuje název prvku, který odpovídá tomuto členu.

(Zděděno od MessageContractMemberAttribute)
Namespace

Určuje obor názvů elementu, který odpovídá tomuto členu.

(Zděděno od MessageContractMemberAttribute)
ProtectionLevel

Určuje, zda má být člen přenášen as-is, podepsán nebo podepsán a zašifrován.

(Zděděno od MessageContractMemberAttribute)
Relay

Určuje, jestli se má tato hlavička předávat podřízeným uzlům. To je namapováno na atribut hlavičky relay SOAP.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)

Metody

Name Description
Equals(Object)

Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí kód hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro