【问题标题】:Handling ELMAH errors from malformed requests in ASP.NET MVC在 ASP.NET MVC 中处理来自格式错误的请求的 ELMAH 错误
【发布时间】:2012-10-25 17:05:00
【问题描述】:

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

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

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

【问题讨论】:

  • 我想补充一点,我希望有某种设置告诉 ASP.NET MVC 如果找到与请求匹配的路由,但它找不到相应的操作方法,则返回 404匹配指定的路由参数。我猜这不存在。

标签: asp.net-mvc elmah


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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 2021-08-07
    • 1970-01-01
    相关资源
    最近更新 更多