2009-10-31 75 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(); 
    } 

    }