MessageHeaderAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
orRole
(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 |
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 |
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) |