【发布时间】:2010-09-18 09:19:25
【问题描述】:
我正在尝试在我的 WCF 服务中实现 IErrorHandler,以便在将到达服务边界的每个异常传递给客户端之前记录它。我已经使用 IErrorHandlers 将 Exceptions 转换为类型化的 FaultExceptions,这非常有用。根据 IErrorHandler.HandleError() 的 MSDN,它还旨在用于在边界进行日志记录。
问题是,不能保证在操作线程上调用 HandleError 函数,所以我不知道如何获取有关触发异常的操作的信息。我可以从异常本身中获取 TargetSite,但这给了我内部方法而不是操作。我还可以解析 StackTrace 字符串以找出它被抛出的位置,但这似乎有点脆弱和做作。在 HandleError 函数中是否有任何一致的、受支持的方式来获取任何状态信息(消息、操作描述等)?或者任何其他方式来自动记录服务调用的异常?
我正在寻找一种在生产环境中实施的解决方案,使用我现有的日志框架,所以 SvcTraceViewer 不会为我做这件事。
谢谢。
【问题讨论】:
标签: c# wcf exception error-handling