我想在全局范围内捕获这些类型的错误,以便我可以将它们记录到数据库中并向用户显示一条友好的消息: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/