WP7 の場合、「簡単な」方法はありません。WCF のほとんどの拡張ポイントは WP7 プラットフォームには存在しないため、いくつかの代替手段があります。
最も簡単な方法は、 を使用しOperationContext
て発信メッセージ ヘッダーを追加することです。これはかなり単純ですが (以下を参照)、呼び出す操作ごとにこれを行う必要があります。
var client = new ServiceReference1.MyServiceClient();
client.OperationCompleted += ...;
using (new OperationContextScope(client.InnerChannel))
{
OperationContext.Current.OutgoingMessageHeaders.Add(
MessageHeader.CreateHeader(
"headerName", "http://header.namespace", "the value"));
client.OperationAsync(param1, param2);
}
すべての操作でそれを行うのが多すぎる場合、別の方法として、クライアントをラップするクラスを作成し、すべての操作でそれを行います。まだ多くのコードがありますが、少なくともアプリケーション全体に分散するのではなく、1 つのポイントに集中します。
最後の選択肢 (今思い出すことができます) は、メッセージ インスペクターを使用することです。それらはプラットフォームの一部ではありませんが、シナリオによっては、http://blogs.msdn.com/b/carlosfigueira/archive/2011/のブログ投稿に示されているように、インスペクター/フォーマッターのサポートを 1 つ実装しました。 06/21/wcf-extensibility-extensibility-in-windows-phone-and-silverlight-3.aspx . 単純なシナリオでは、問題なく動作するはずです。