2

我们刚刚安装了一个大的 ASP.NET MVC 项目(从 ASP.NET 转换而来)。一切运行良好,但我们通过 ELMAH 看到大量错误,这些错误来自格式错误的 bot/spider 请求。它们不是恶意的——只是格式不正确。示例是对没有 ProductID 的产品页面的请求和对 ProductID 不是整数的产品页面的请求。在这些情况下,我设置了一个需要整数 ProductID 的操作方法,如果 ASP.NET MVC 看到其他任何内容,则会引发错误。

我真的不想破解我的操作方法来接受字符串或可为空的整数并编写代码来进行转换和处理丢失的参数。处理真实用户看不到的错误似乎需要做很多工作。

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

4

1 回答 1

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。这样你的过滤就不会太苛刻,导致误报。

于 2012-10-25T09:05:00.837 回答