我正在寻找一种在WCF REST服务中记录请求和响应的方法。 WCF REST入门套件附带了一个RequestInterceptor类,可用于拦截请求,但似乎没有相应的响应。理想情况下,我希望能够在通过线路发送之前拦截响应,例如当底层服务方法返回时。有什么建议吗?
答案 0 :(得分:2)
请注意,如果要拦截原始邮件而不是参数,可以注入IDispatchMessageInspector的实现,而不是Dani建议的IParameterInspector扩展点。
答案 1 :(得分: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();
}
}