2

我的WCF应用程序使用IDispatchMessageInspector一些高级监控 -发生错误时和未发生错误时

我正在寻找一种方法来获取该IDispatchMessageInspector.BeforeSendReply方法时服务中发生的异常,因为我需要根据异常类型执行特定操作。

不是在寻找修改\记录我的错误,因为我已经使用自定义IErrorHandler.

我考虑过OperationContext在我在时添加例外,IErrorHandler并在我回到时简单地阅读它IDispatchMessageInspector,但我更喜欢内置的东西。

当我在IDispatchMessageInspector.BeforeSendReply方法中时,有什么方法可以获取异常?也许在 OperationContext 的某个地方?

4

1 回答 1

0

IDispatchMessageInspector接口允许您在发送消息之前查看到达端点的消息,以及在发送回客户端之前查看相应的响应消息。

BeforeSendReply()关于可能有用的方法需要注意几点:

  • 如果消息被分派到的操作是单向操作,则当操作完成执行时,WCF 运行时仍将在您的 IDispatchMessageInspector 实现上调用此方法。但是,表示响应消息的“reply”参数将为空,因此请务必在处理消息之前检查它。
  • 通过检查回复消息的IsFault 属性,您可以在您的实现中检测发送消息的操作是否引发异常/错误。这对于单向操作甚至是正确的(即使客户端永远不会看到它,服务器端调度程序仍然正确地通知消息检查器)
于 2017-01-25T14:56:57.853 回答