MessageHeaderAttribute 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定某個資料成員為 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
- 繼承
- 衍生
- 屬性
範例
下列程式碼範例示範如何使用 MessageHeaderAttribute 為回應訊息建立 SOAP 標頭,此回應訊息的 Name、Namespace 和 MustUnderstand 屬性已設定為適用於這個標頭的值。 程式碼範例後面是所傳送的訊息範例。
[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
備註
MessageHeaderAttribute 屬性 (Attribute) 可讓您將含有 MessageContractAttribute 屬性 (Attribute) 標記之型別的欄位和屬性 (Property),對應至 SOAP 訊息標頭。 欄位或屬性可以是簡單型別,或可序列化的複合型別。
如需控制 SOAP 主體內容的序列化,而不需修改預設 SOAP 信封本身的資訊,請參閱 System.Runtime.Serialization.DataContractAttribute 在 服務合約中指定資料傳輸,以及 使用資料合約。
如需建立訊息合約的詳細資訊,請參閱 使用訊息合約。
SOAP 標準會定義下列可存在於標頭的屬性:
Actor
或Role
(在 SOAP 1.1 中為Actor
,在 SOAP 1.2 中為Role
)MustUnderstand
Relay
Actor
或 Role
屬性會指定節點的 URI,即為指定的標頭所指向的節點。
MustUnderstand
屬性會指定標頭是否能夠解讀節點處理。
Relay
屬性會指定標頭是否要轉送至下游節點。 Windows Communication Foundation (WCF) 不會對傳入訊息執行這些屬性的任何處理,但 屬性除外 MustUnderstand
。
不過,您還是可以讀取和寫入這些屬性,即使根據預設它們不會送出。 您可以用兩種方式設定屬性值。 首先,您可以變更 Actor 上的 MustUnderstand、Relay 和 MessageHeaderAttribute 屬性 (沒有 Role
屬性 - 設定 Actor 屬性,並在 Role
使用 SOAP 1.2 時傳遞) 。 例如:
控制這些屬性的另一種方式,是將需要的標頭型別變成 MessageHeader<T> 類別的型別參數,並將結果型別搭配 MessageHeaderAttribute 一起使用。 然後,以程式設計的方式使用 MessageHeader<T> 屬性 (Property),來設定 SOAP 屬性 (Attribute)。 例如:
如果同時使用動態和靜態控制項機制,則靜態設定採用預設值,但可以使用動態機制來覆寫。 例如:
允許使用動態屬性控制項來建立重複標頭。 例如:
[MessageHeaderArray] public MessageHeader<Person> documentApprovers[];
在接收端,只能使用泛型 MessageHeader<T> 類別來讀取這些 SOAP 屬性。 您可以檢查 Actor 型別標頭的 Relay、MustUnderstand 或 MessageHeader<T> 屬性,探索接收到的訊息上的屬性設定。
接收到訊息並傳回訊息時,SOAP 屬性設定只會為 MessageHeader<T> 型別的標頭而往返。
建構函式
MessageHeaderAttribute() |
初始化 MessageHeaderAttribute 類別的新執行個體。 |
屬性
Actor |
取得或設定 URI,這個 URI 表示此標頭的目標節點。 使用 SOAP 1.2 時,會對應到 role 標頭屬性,而使用 SOAP 1.1 則會對應到 actor 標頭屬性。 |
HasProtectionLevel |
在衍生類別中覆寫時,取得指出成員是否已指派保護層級的值。 (繼承來源 MessageContractMemberAttribute) |
MustUnderstand |
指定扮演 Actor 角色的節點是否必須解讀這個標頭。 這會對應到 |
Name |
指定對應於這個成員的項目名稱。 (繼承來源 MessageContractMemberAttribute) |
Namespace |
指定對應於這個成員的項目命名空間。 (繼承來源 MessageContractMemberAttribute) |
ProtectionLevel |
指定成員要依現狀加以傳輸、簽署,或者加以簽署並加密。 (繼承來源 MessageContractMemberAttribute) |
Relay |
指定這個標頭是否要轉送至下游節點。 這會對應到 |
TypeId |
在衍生類別中實作時,取得這個 Attribute 的唯一識別碼。 (繼承來源 Attribute) |
方法
Equals(Object) |
傳回值,這個值指出此執行個體是否與指定的物件相等。 (繼承來源 Attribute) |
GetHashCode() |
傳回這個執行個體的雜湊碼。 (繼承來源 Attribute) |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
IsDefaultAttribute() |
在衍生類別中覆寫時,表示這個執行個體的值是衍生類別的預設值。 (繼承來源 Attribute) |
Match(Object) |
在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。 (繼承來源 Attribute) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
傳回代表目前物件的字串。 (繼承來源 Object) |
明確介面實作
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。 (繼承來源 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
擷取物件的類型資訊,可以用來取得介面的類型資訊。 (繼承來源 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
擷取物件提供的類型資訊介面數目 (0 或 1)。 (繼承來源 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供物件所公開的屬性和方法的存取權。 (繼承來源 Attribute) |