1

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

4

2 回答 2

2

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

于 2009-10-31T11:58:16.143 回答
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();
    }

  }
于 2009-10-31T08:29:49.803 回答