记录WCF REST服务中的请求/响应

我正在寻找一种方法来记录WCF REST服务中的请求和响应。 WCF REST入门工具包附带了一个RequestInterceptor类,可用于拦截请求,但似乎没有与响应等效的内容。 理想情况下,我希望能够在通过线路发送响应之前拦截响应,例如,当底层服务方法返回时。 有什么建议么?


请注意,如果您想拦截原始消息,而不是参数,则可以注入IDispatchMessageInspector的实现,而不是Dani建议的IParameterInspector扩展点。


WCF中有一项技术:创建派生自属性IOperationBehavior的InstrumentedOperationAttribute。

在你实现的内部:

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();
    }

  }
链接地址: http://www.djcxy.com/p/26893.html

上一篇: Logging requests/responses in a WCF REST service

下一篇: Access HttpContext inside WCF RequestInterceptor