MyWCF应用程序在发生错误和未发生错误时使用IDispatchMessageInspector
进行某些高级监视。
当我使用IDispatchMessageInspector.BeforeSendReply
方法时,我正在寻找一种方法来获取服务中发生的异常,因为我需要根据异常类型执行特定操作。
我不是想要修改\记录我的错误,因为我已经使用自定义IErrorHandler
进行了修改\记录
当我在IErrorHandler
中时,我曾想过将异常添加到OperationContext
中,当我回到IDispatchMessageInspector
中时,只需简单地读取它,但我更喜欢内置的东西。
当我使用IDispatchMessageInspector.BeforeSendReply
方法时,有什么方法可以获取异常吗?也许在OperationContext上?
IDispatchMessageInspector
接口允许您查看在发送消息之前到达端点的消息,以及在将其发送回客户端之前的相应响应消息。
关于
BeforeSendReply()
方法需要注意的几点可能有用:
- 如果消息被调度到的操作是单向的操作,上的WCF运行时仍将调用此方法当操作具有执行完毕。然而,代表响应消息将为null,所以一定要检查在操作消息之前
- 如果操作通过检查IsFault属性。这甚至适用于单向操作(即使客户端永远看不到它,服务器端dispatcher仍然正确地通知消息检查器)