处理ASP.NET MVC中格式错误的请求中的ELMAH错误

时间:2012-05-09 13:43:45

标签: asp.net-mvc elmah

我们刚安装了一个很棒的ASP.NET MVC项目(从ASP.NET转换而来)。一切都很好,但是我们看到ELMAH发生的大量错误来自于格式错误的机器人/蜘蛛请求。它们不是恶意的 - 只是格格不入。示例是对没有ProductID的产品页面的请求,以及对ProductID不是整数的产品页面的请求。在这些情况下,我有一个操作方法设置,它需要一个整数ProductID,如果ASP.NET MVC看到任何其他内容,则抛出错误。

我真的不想破解我的动作方法来接受字符串或可空的int并编写代码来进行转换并处理缺少的参数。这似乎是很多工作来处理真实用户不会看到的错误。

我知道我可以在ELMAH中过滤掉这些错误,但我想知道是否有一种更优雅的方式来处理它。

1 个答案:

答案 0 :(得分:1)

您可以过滤ELMAH中记录的错误。

有关错误过滤的一般文章 - http://code.google.com/p/elmah/wiki/ErrorFiltering

部分样本 - http://code.google.com/p/elmah/wiki/ErrorFilterExamples

你可以把这样的东西放在你的global.asax(或其附近)。

    protected void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
    {
        if(e.Exception.GetBaseException() is WebFaultException)
        {
            var exception = ((WebFaultException) e.Exception.GetBaseException());

            if(exception.StatusCode == HttpStatusCode.NotModified)
                e.Dismiss();
        }
    }

我认为使用web.config方法可能会更好,明确列出使用已知正则表达式模式获得的URL。那样你过滤就不会苛刻,导致误报。