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