我想全局捕获这些类型的错误,以便我可以将它们记录到数据库并向用户显示一条很好的消息: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.
但是,当我拼错网址时,除了404错误之外,我会被 Application_Error 方法捕获。相反,我浏览器显示此页面(见截图)。在这种情况下无法记录错误。
我 ASP.NET Webform 4.5 。在之前的版本中,例如 ASP.NET 4.0 ,我能够捕获所有3种类型的错误。
有没有办法捕获404错误?
答案 0 :(得分:0)
通过“Misspell url”我假设你的意思是url的控制器/动作部分(对域或子域),否则这将是一个没有实际意义的问题。如果是这样,那么像K.Tamayo提到的检查客户错误如下:
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
答案 1 :(得分:0)
您可以从web.config配置404页面,如下所示
<configuration>
<system.web>
<customErrors mode="On" >
<error statusCode="404" redirect="404.aspx?/>
</customErrors>
</system.web>
</configuration
在404.aspx中,您可以记录错误并显示您想要的任何内容。
我不确定为什么Application_Error没有被触发,但是我认为它应该在发生服务器端异常时起作用,但是根据这个问题的答案,它应该可以工作
答案 2 :(得分:0)
一些请求由框架本身管理。因此它不会出现 Application_Error
如果要捕获 Application_Error 中的所有错误,请在 web.config
中添加以下内容i + 1
在下面的线程中查找详细响应。