1

Envelope/Header/Security 要素にカスタム ヘッダーを追加して読み取ることはできますか? MessageHeader 属性を使用してみましたが、ヘッダーを Security 要素に入れることができません。

次のように Security ヘッダーにアクセスできると考えて、IClientMessageInspector を実装するクラスを作成しました。

public object BeforeSendRequest(ref Message request, IClientChannel channel)
{
   MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);
   request = buffer.CreateMessage();

   Message originalMessage = buffer.CreateMessage();
   foreach (MessageHeader h in originalMessage.Headers)
   {
      Console.WriteLine("\n{0}\n", h);
   }

   return null;
}

ただし、Security ヘッダーは originalMessage.Headers オブジェクトには存在しません。

4

1 に答える 1

0

カスタム メッセージ エンコーダーを作成します: http://msdn.microsoft.com/en-us/library/ms751486.aspx

エンコーダーの WriteMessage オーバーライドでメッセージ ヘッダーにアクセスできます。Message の Headers プロパティには Security ヘッダーが含まれないことに注意してください (ただし、これは使用しているセキュリティの種類によって異なる場合があります)。たとえば、Message.WriteMessage(XmlWriter) を使用して、メッセージをストリームまたはファイルに書き込みます。ストリーム/ファイルには、ネットワーク経由で送信される直前のメッセージの内容 (Security 要素を含む) が含まれます。そこから、必要に応じてメッセージを変更し、変更を含む ArraySegment を返すことができます。

于 2011-09-29T20:41:47.500 に答える