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

时间:2009-10-31 08:13:49

标签: wcf rest request response

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

2 个答案:

答案 0 :(得分:2)

请注意,如果要拦截原始邮件而不是参数,可以注入IDispatchMessageInspector的实现,而不是Dani建议的IParameterInspector扩展点。

答案 1 :(得分:0)

WCF中有一项技术: 您创建从Attribute,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();
    }

  }