ASP.. NET错误处理-在Global.asax中没有检测到正确的错误类型

本文关键字:错误 检测 类型 处理 NET asax Global ASP | 更新日期: 2023-09-27 18:11:15

我定义了一些自定义的错误类,每个类都有自己的功能(未显示):

Exceptions.cs

public abstract class MyAppException : Exception {
  //...
}
public class ValidationException : MyAppException {
  //...
}
public class AccessDeniedException : MyAppException {
  //...
}

现在在空白页面的代码后面我有:

test.aspx.cs

protected void Page_Load(object sender, EventArgs e)
{
  throw new AccessDeniedException();
}

我的目的是在应用程序级别捕获这个:

Global.asax.cs

protected void Application_Error(object sender, EventArgs e) {
  var exc = Server.GetLastError();
  if (exc is MyAppException) ((MyAppException)exc).Log();
}

但是通过添加一个断点,我发现exc is MyAppException的计算结果为false

我哪里错了?

ASP.. NET错误处理-在Global.asax中没有检测到正确的错误类型

Try the InnerException:

if (exc.InnerException is MyAppException)

System.Web.UI.Page.HandleError方法将实际的异常包装到HttpUnhandledException中。