c# - Application_Error 未捕获 404 类型的错误

标签 c# asp.net webforms

我想在全局范围内捕获这些类型的错误,以便我可以将它们记录到数据库中并向用户显示一条友好的消息:500、403 和 404。我正在使用 Log4Net 处理错误。

void Application_Error(object sender, EventArgs e)
{      
  string redirectUrl = "~/Error/GenericError.aspx"; //I put a breakpoint here...
  var httpException = (HttpException)Server.GetLastError();
  int httpCode = httpException.GetHttpCode();

  //more code here...
}

只有在发生异常时才会命中断点,然后将错误识别为 500。

但是,当我拼错一个 URL 时,我排除了一个 404 错误被 Application_Error 方法捕获。相反,我浏览器显示此页面(见屏幕截图)。在这种情况下无法记录错误。

我是 ASP.NET Webform 4.5。在以前的版本中,例如 ASP.NET 4.0,我能够捕捉到所有 3 种类型的错误。

有没有办法也捕获 404 错误?

最佳答案

我假设“URL 拼写错误”是指 url 的 Controller /操作部分(相对于域或子域),否则这将是一个没有实际意义的问题。如果是这样,那么就像 K.Tamayo 提到的那样检查 customererrors 是否关闭,如下所示:

<configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration>

关于c# - Application_Error 未捕获 404 类型的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40324913/

相关文章:

c# - Windows Phone 8.1 如何以编程方式创建具有指定模板的磁贴

c# - 如何检查网站是否已在网络浏览器中打开?

c# - 我可以在安装 NuGet 包时解决添加这些 .dll 问题吗?

c# - "select"实体在运行时包含导航属性

c# - 从 gridview 获取复选框值

asp.net - 什么时候应该使用工厂模式?

css - @media 屏幕的 css 在 Visual Studio 2015 中不起作用

c# - webforms 中的输出缓存 varybyparams 是否理解路由参数?

asp.net-mvc - ASP.NET 网络表单是否被扫地出门为 mvc 腾出空间?

jquery - 数据表 - fnGetNodes() 如何将结果推送回服务器