2009-10-31 36 views
1

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

回答

2

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

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

    }