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, 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
- 继承
- 派生
- 属性
示例
下面的代码示例演示如何使用 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 特性允许您将用 MessageContractAttribute 特性标记的类型的字段和属性映射到 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> 属性设置这些 SOAP 特性。 例如:
如果同时使用了动态和静态控制机制,则静态设置为默认值,但可以使用动态机制重写。 例如:
允许使用动态属性控件创建重复的标头。 例如:
[MessageHeaderArray] public MessageHeader<Person> documentApprovers[];
在接收端,仅当使用泛型 MessageHeader<T> 类时才能读取这些 SOAP 属性。 检查 Actor 类型标头的 Relay、MustUnderstand 或 MessageHeader<T> 属性以发现已接收消息的属性设置。
如果在接收一条消息后又发送回发送方,则仅对 MessageHeader<T> 类型的标头往返 SOAP 属性设置。
构造函数
MessageHeaderAttribute() |
初始化 MessageHeaderAttribute 类的新实例。 |
属性
Actor |
获取或设置一个指示此标头为目标的节点的 URI。 使用 SOAP 1.2 时映射到角色标头属性,而使用 SOAP 1.1 时则映射到参与者标头属性。 |
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) |
将一组名称映射为对应的一组调度标识符。 (继承自 Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
检索对象的类型信息,然后可以使用该信息获取接口的类型信息。 (继承自 Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
检索对象提供的类型信息接口的数量(0 或 1)。 (继承自 Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
提供对某一对象公开的属性和方法的访问。 (继承自 Attribute) |