MessageHeaderAttribute クラス

定義

データ メンバーが 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 を使用することにより、このヘッダーに対して適切な値が設定された Name プロパティ、Namespace プロパティ、および MustUnderstand プロパティを持つ応答メッセージの SOAP ヘッダーを作成しています。 このコード例の後、送信時のメッセージの例を示します。

 [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 実行しません。

ただし、これらの属性が既定により送信されない場合でも、それらを読み書きできます。 属性値は 2 つの方法で指定できます。 最初の方法では、ActorMustUnderstandRelay、および MessageHeaderAttribute の各プロパティを変更できます (プロパティはありません Role - プロパティを Actor 設定し、 Role SOAP 1.2 が使用されている場合に渡されます)。 次に例を示します。

これらの属性を制御する 2 つ目の方法は、目的のヘッダーの型を MessageHeader<T> クラスの型パラメーターとして設定し、作成された型を MessageHeaderAttribute と共に使用することです。 その後で、MessageHeader<T> のプロパティをプログラムで使用して、SOAP 属性を設定します。 次に例を示します。

動的と静的の両方の制御メカニズムを使用している場合は、既定で静的な設定値が使用されますが、動的なメカニズムを使用してその値をオーバーライドできます。 次に例を示します。

動的な属性コントロールを持つ繰り返すヘッダーを作成できます。 次に例を示します。

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

受信側では、これらの SOAP 属性の読み取りは、ジェネリックな MessageHeader<T> クラスが使用されている場合のみ実行できます。 受信メッセージの属性設定を調査するために、Actor 型のヘッダーの Relay プロパティ、MustUnderstand プロパティ、または MessageHeader<T> プロパティを調べます。

メッセージの受信と返信が行われるとき、これらの SOAP 属性の設定は、MessageHeader<T> 型のヘッダーとして往復するだけです。

コンストラクター

MessageHeaderAttribute()

MessageHeaderAttribute クラスの新しいインスタンスを初期化します。

プロパティ

Actor

このヘッダーが対象とするノードを示す URI を取得または設定します。 SOAP 1.2 が使用される場合は role 属性に、SOAP 1.1 が使用される場合は actor ヘッダー属性にマッピングされます。

HasProtectionLevel

派生クラスでオーバーライドされた場合は、メンバーに保護レベルが割り当てられているかどうかを示す値を取得します。

(継承元 MessageContractMemberAttribute)
MustUnderstand

Actor ロールで動作するノードが、このヘッダーを認識する必要があるかどうかを指定します。 これは、mustUnderstand SOAP ヘッダー属性にマッピングされます。

Name

このメンバーに対応する要素の名前を指定します。

(継承元 MessageContractMemberAttribute)
Namespace

このメンバーに対応する要素の名前空間を指定します。

(継承元 MessageContractMemberAttribute)
ProtectionLevel

メンバーをそのまま送信するのか、署名して送信するのか、または署名と暗号化を行って送信するのかを指定します。

(継承元 MessageContractMemberAttribute)
Relay

このヘッダーをダウンストリーム ノードに中継する必要があるかどうかを指定します。 これは、relay SOAP ヘッダー属性にマッピングされます。

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)

適用対象