我的WCF应用程序使用IDispatchMessageInspector
进行一些高级监视-发生错误时以及没有发生错误时。
我正在寻找一种获取IDispatchMessageInspector.BeforeSendReply
方法时服务中发生的异常的方法,因为我需要根据异常类型执行特定的操作。
我不是要修改\记录错误,因为我已经使用自定义IErrorHandler
进行了此操作。
我曾考虑过在OperationContext
时将异常添加到IErrorHandler
中,而当我回到IDispatchMessageInspector
时只是读取它,但是我更喜欢内置的东西。
使用IDispatchMessageInspector.BeforeSendReply
方法时,有什么方法可以获取异常?也许在OperationContext上的某个地方?
最佳答案
IDispatchMessageInspector
界面使您可以查看在分派之前到达端点的消息以及在将其发送回客户端之前的相应响应消息。
关于BeforeSendReply()
方法可能需要注意的几点:
如果将消息发送到的操作是单向的
操作时,WCF运行时仍将调用此方法
您的IDispatchMessageInspector实现在操作具有
完成执行。但是,“ reply”参数代表
响应消息将为空,因此请确保检查该消息
在处理消息之前。
您可以在实现中检测该操作是否显示消息
通过检查IsFault派遣抛出异常/故障
回复消息的属性。单向甚至是正确的
操作(即使客户端永远不会看到它,服务器端
调度程序仍会正确地通知消息检查人员。