質問

WCF REST サービスで要求と応答の両方を記録する方法を探しています。WCF REST スターター キットには、要求をインターセプトするために使用できる RequestInterceptor クラスが付属していますが、応答に相当するクラスはないようです。理想的には、応答が回線経由で送信される直前に応答を傍受できるようにしたいと考えています。基礎となるサービスメソッドが返されたとき。助言がありますか?

役に立ちましたか?

解決

パラメータではなく生のメッセージをインターセプトしたい場合は、次の実装を注入できることに注意してください。 IDispatchMessageInspector Dani が提案する IParameterInspector 拡張ポイントの代わりに。

他のヒント

WCFでのテクニックがあります: あなたはAttributeから派生InstrumentedOperationAttribute、IOperationBehaviorを作成します。

あなたの内側に実装します:

public void ApplyDispatchBehavior(

   OperationDescription operationDescription,

   DispatchOperation dispatchOperation

   )
{

  dispatchOperation.ParameterInspectors.Add(

     new ServerPI()

     );

}

とServerPI()クラスは魔法を行うものです。 あなたがbeforecallに必要なすべてのものとaftercallメソッドを実行します:

  class ServerPI : IParameterInspector
  {

    public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
    {
      Guid result = (Guid)correlationState;
      // ...
    }

    public object BeforeCall(string operationName, object[] inputs)
    {
      string parameter1 = inputs[0] as string;
      return Guid.NewGuid();
    }

  }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top