Global.asax异常处理和HTTP错误代码

时间:2010-09-17 21:46:58

标签: asp.net asp.net-mvc asp.net-mvc-2

我有一个相当标准的MVC2应用程序在4.0和IIS6下运行。我采用通配符过滤方法将所有请求路由到asp.net ISAPI过滤器。到目前为止一切都很好。

我现在已经在global.asax中向Application_Error添加了一些代码来捕获异常并通过电子邮件将堆栈等发送给我。这也可以正常工作。

但是,我收到了各种404相关的流量。主要是“没有找到路径'/favicon.ico的控制器'或者没有实现IController”但我可以想象我很快就会收到robot.txt请求等。

有什么方法可以从HttpContext.Current.Server.GetLastError()获取HTTP错误代码?然后,我可以简单地忽略所有404结果。或者我应该看一下不同的方法吗?

2 个答案:

答案 0 :(得分:2)

关于favicon,您可以在Global.asax中执行此操作以添加忽略路由:

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

答案 1 :(得分:2)

提出问题,找到答案......

我需要对此进行测试,但它看起来很有希望。

var ex = HttpContext.Current.Server.GetLastError();

// filter out 404 responses
var httpException = ex as HttpException;
if (httpException != null && httpException.GetHttpCode() == 404)
    return;