记录WCF REST服务中的请求/响应
我正在寻找一种方法来记录WCF REST服务中的请求和响应。 WCF REST入门工具包附带了一个RequestInterceptor类,可用于拦截请求,但似乎没有与响应等效的内容。 理想情况下,我希望能够在通过线路发送响应之前拦截响应,例如,当底层服务方法返回时。 有什么建议么?
请注意,如果您想拦截原始消息,而不是参数,则可以注入IDispatchMessageInspector的实现,而不是Dani建议的IParameterInspector扩展点。
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();
}
}
链接地址: http://www.djcxy.com/p/26893.html