我有一个相当标准的 MVC2 应用程序在 4.0 和 IIS6 下运行。我采用通配符过滤器方法将所有请求路由到 asp.net ISAPI 过滤器。到目前为止一切顺利。
我现在已经在 global.asax 中的 Application_Error 中添加了一些代码来捕获异常并向我发送电子邮件堆栈等。这也可以正常工作。
但是,我收到了各种与 404 相关的流量。主要是“路径'/favicon.ico'的控制器未找到或未实现IController”,但我可以想象我很快就会收到robot.txt请求等。
有什么方法可以从 HttpContext.Current.Server.GetLastError() 获取 HTTP 错误代码吗?然后我可以简单地忽略所有 404 结果。或者我应该考虑不同的方法?
关于图标,您可以在 Global.asax 中添加忽略路由:
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
提出问题,寻找答案......
我需要测试一下,但它看起来很有希望。
var ex = HttpContext.Current.Server.GetLastError();
// filter out 404 responses
var httpException = ex as HttpException;
if (httpException != null && httpException.GetHttpCode() == 404)
return;
...继续:如何在 Global.asax 中检查错误已在过滤器中处理?