我有一个相当标准的MVC2应用程序在4.0和IIS6下运行。我采用通配符过滤方法将所有请求路由到asp.net ISAPI过滤器。到目前为止一切都很好。
我现在已经在global.asax中向Application_Error添加了一些代码来捕获异常并通过电子邮件将堆栈等发送给我。这也可以正常工作。
但是,我收到了各种404相关的流量。主要是“没有找到路径'/favicon.ico的控制器'或者没有实现IController”但我可以想象我很快就会收到robot.txt请求等。
有什么方法可以从HttpContext.Current.Server.GetLastError()获取HTTP错误代码?然后,我可以简单地忽略所有404结果。或者我应该看一下不同的方法吗?
答案 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;