将所有内部服务器错误插入到Windows事件日志中

时间:2009-08-20 13:21:10

标签: error-handling wcf event-log

我开发了一个处理HTTP请求的小型WCF服务。

我想知道发生的每一个错误:

  • 从合同视图中导致500内部服务器错误的所有内容
  • 从绑定视图导致CommunicationException的所有内容(我写了一个自定义的,但也使用标准的)

应将错误放入Windows事件日志中。

我的问题是:

  • 是否有可能为整个WCF堆栈添加一个中央事件处理程序,捕获所有异常并将它们打印到事件日志中?

问候。

2 个答案:

答案 0 :(得分:1)

您可以将IErrorHandler interface用于此目的。

答案 1 :(得分:1)

在服务器端 - 是的,正如John已经指出的那样,您基本上可以在服务类上实现IErrorHandler接口并捕获该端的所有错误。

但是,在客户端,您只需使用优秀的旧版try {...} catch {...}来保护所有服务调用 - 毕竟,您可能

  • 调用一个根本不存在的服务器
  • 调用暂时不可用的服务器
  • 松散的网络连接(有大推土机的家伙切断你的网络线:-))
  • 更多这类事情

那些将是CommunicationExceptions(或其后代),并且必须在客户端进行处理。

因此,您可以集中处理服务器端的事情(至少只要消息已经到达您的服务类并且正在处理) - 其他任何事情都必须单独处理。

马克