Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在WCF REST服务中记录请求/响应_Wcf_Rest_Request_Response - Fatal编程技术网

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

在WCF REST服务中记录请求/响应,wcf,rest,request,response,Wcf,Rest,Request,Response,我正在寻找一种在WCF REST服务中记录请求和响应的方法。WCF REST初学者工具包附带了一个RequestInterceptor类,可用于拦截请求,但似乎没有响应的等效类。理想情况下,我希望能够在通过线路发送响应之前截获响应,例如,当底层服务方法返回时。有什么建议吗?WCF中有一项技术: 创建从属性IOperationBehavior派生的InstrumentedOperationAttribute 在您的内部实现: public void ApplyDispatchBehavior(

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

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

  }

请注意,如果要截获原始消息而不是参数,可以插入的实现,而不是Dani建议的IParameterInspector扩展点