【发布时间】:2013-04-27 06:14:33
【问题描述】:
我有一个 WCF 服务,它在 Global.asax 中有以下代码:
protected void Application_Start(object sender, EventArgs e)
{
// Make sure that any exceptions that we don't handle at least get logged.
AppDomain.CurrentDomain.UnhandledException += LogUnhandledException;
}
private void LogUnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Log.Error.LogException("UnhandledException", e.ExceptionObject as Exception);
}
这个想法是至少记录所有未经处理的异常。
但它似乎从未被调用过。我尝试在我的一个服务操作中执行除以零,它只是在遇到异常后停止服务。
int zero = 0;
int result = 100 / zero;
永远不会调用 LogUnhandledException 方法。
我在 IIS 和调试器中都试过这个。
我怎样才能让这个事件适用于 WCF 服务?
【问题讨论】:
-
我想知道这是否与 IIS 或 WCF 服务的托管方式有关。就像here,这些家伙说:总之,可以使用 global.asax 中的 Application_Error 事件处理程序来捕获 ASP.NET 应用程序中未处理的异常,或者通过创建 HttpModule 来捕获 AppDomain.UnhandledException 事件。