任何人都可以就过滤我的 Elmah ( http://code.google.com/p/elmah/ ) 异常日志提供建议吗?
Elmah 是一个非常有值(value)的工具,可以突出显示我在 Web 应用程序中的明显错误和疏忽。
然而现在..大多数Elmah条目与我自己的愚蠢无关(好吧 - 也许他们有 - 因此我的问题),但任何建议将不胜感激。
我的 Elmah 日志现在有 10'000 条类似于以下内容的条目:
'/ws/login.php' 找不到或
它没有实现 IController。
找不到“/text/javascript”
或者它没有实现 IController。
'/jlkqyvaugdaktp.html' 不能
发现或不执行
Controller 。 [[实际上是 100
这些!! ...做这些随机页面
在“HackerDom”中意味着什么? ]]
'/脚本/thickbox/macFFBgHack.png'
找不到或没有
实现 IController。
所以.. 到“问题”
很明显,这些异常中的绝大多数是由 IController 生成的……我可以告诉 Elmah 只是“忘记”这些并继续记录我真正的异常吗?
还是我非常通用的 MVC IgnoreRoute 设置不够好?我是否应该忽略“.htm”、“*.php”和所有其他内容,以便我可以更真实地看到 Elmah 报告关于我的应用程序可能更真实地丢失的页面/项目/对象?
非常感谢您的时间和考虑。
我现有的路线设置如下所示:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.IgnoreRoute("{*forums}", new { forums = @"cccForums/.*" });
routes.IgnoreRoute("{file}.txt");
/// REAL ROUTES
routes.MapRoute(
"ItemIndex", // Route name
"Item/Index/{page}", // URL with parameters
new { controller = "PageItem", action = "Index", page = 1} // Parameter defaults
);
.............
.............
/// LAST CASE
routes.MapRoute("Error", "{*url}", new { controller = "Site", action = "Map" });
最佳答案
一种解决方案是实现一个捕获所有路由,将所有未知请求重定向到 404 页面。这将防止未捕获的异常,并且您的最终用户会获得漂亮的页面(非黑客类型)。
routes.MapRoute("Error", "{*url}",
new { controller = "Error", action = "http404" }
);
将它放在 global.asax 中注册路由函数的末尾。您应该会看到所有 ELMAH 错误都消失了。
编辑
还不快睡! :)如果您不想记录 404 错误(或与 ELMAH 相关的任何其他类型的错误),您应该能够在您的 web.config 中执行以下操作:
<elmah>
...
<errorFilter>
<test>
<equal binding="HttpStatusCode" value="404" type="Int32" />
</test>
</errorFilter>
</elmah>
ELMAH ErrorFiltering Documentation
关于asp.net-mvc - MVC、Elmah、明显的黑客企图和 "generic"IgnoreRoutes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3532006/