0

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

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

  • 从合同视图中导致 500 Internal Server Error 的所有内容
  • 从绑定视图中导致 CommunicationException 的所有内容(我编写了一个自定义的,但也在使用标准的)

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

我的问题是:

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

问候。

4

2 回答 2

1

为此,您可以使用该IErrorHandler界面。

于 2009-08-20T14:00:22.893 回答
1

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

但是,在客户端,您只需要使用良好的旧 .NETtry {...} catch {...}来保护所有服务调用 - 毕竟,您可能

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

这些将是CommunicationExceptions(或其后代)并且必须在发生时在客户端进行处理。

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

马克

于 2009-08-20T14:09:57.467 回答