2012-01-16 11 views
0

エンドポイントが複数あるWCFサービスを使用しています。私は、各リクエストを処理する前にメッセージヘッダを検査するためにBehaviorExtensionElementIServiceBehaviorIDispatchMessageInspectorのメソッドを実装しました。私はそれをテストし、wsHttpBindingで正常に動作します。IDispatchMessageInspectorsを実装するときにWCFサービスがバインディングと連携するかどうかを確認するにはどうすればよいですか

私のサービス(メッセージインスペクターがあるので)がNetTcpBindingNamedPipeなどのバインディングでうまく動作するかどうかを確認したいと思います。どうやってやるの?

答えて

0

IDispatchMessageInspectorは、要求メッセージを操作にディスパッチする前、または応答メッセージを呼び出し元に返す前に、インバウンドまたはアウトバウンドのアプリケーションメッセージを検査または変更するために使用されます。

メッセージインスペクタはスタックの上位(ディスパッチレベル)にあるため、バインディングはエンドポイントで使用されても問題ありません。例えば

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) 
{ 
    foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers) 
    { 
     var cd = cdb as ChannelDispatcher; 

     if (cd != null) 
     { 
      foreach (var ed in cd.Endpoints) 
      { 
       ed.DispatchRuntime.MessageInspectors.Add(new AuthorizationHeaderGetter()); 
       ed.DispatchRuntime.InstanceProvider = new UserTokenInjector(serviceDescription.ServiceType); 
      } 
     } 
    } 
} 

上記のコードで(wsHttp又はNETTCP)の結合の「種類」の言及はありません。

あなたの質問については、これをテストする方法については、あなたが何をテストするのかは分かりません。 ApplyDispatchBehaviorでテストするものは何もありません(WCFフレームワークを除く)。 IDispatchMessageInspectorクラスをテストするための単体テストを書くことができます。

関連する問題