【问题标题】:How can I get 404 to work with Elmah and the HandleErrorAttribute written for Elmah in asp.net mvc?如何让 404 与 Elmah 和在 asp.net mvc 中为 Elmah 编写的 HandleErrorAttribute 一起工作?
【发布时间】:2011-04-30 22:58:36
【问题描述】:

我在我的一个 ASP.NET MVC 项目中实现了 Elmah。此外,我还做了以下事情:

  • 我在 post 中实现了 Atif Aziz 编写的 ElmahHandleErrorAttribute
  • 我将属性添加到所有控制器中
  • 我已设置 Elmah 以过滤掉 404 错误,因为我不想记录这些错误
  • 我在共享文件夹中添加了一个 Error.aspx 视图,我希望将其用于我的所有错误。
  • 我在 Web.Config 中的 customErrors 已打开,我没有在其中指定任何错误页面,因为我不应该这样做。

在我的一个控制器中,我有以下代码:

if (model == null)
            throw new HttpException((int)HttpStatusCode.NotFound, "Project not found");

如果在数据库中找不到记录,我只想显示 404。由于某种原因,我的 Error.aspx 页面不会显示 404 错误。相反,它显示通用 asp.net“找不到资源”页面。我试图删除 Elmah 中的 404 过滤器设置,但这并没有改变任何东西。

有趣的是,如果我将错误从 NotFound 更改为 InternalServerError,Error.aspx 页面会正常显示。

有人知道这是为什么吗?

【问题讨论】:

  • “我已经设置 Elmah 过滤掉 404 错误,因为我不想记录这些错误。”这不是按预期工作吗?

标签: asp.net-mvc asp.net-mvc-2 elmah


【解决方案1】:

除了创建示例应用程序之外,我还没有使用 Elmah - 但可能是因为 404 不是应用程序错误?如果我的理解是正确的,则会将 404 错误推送回 IIS,而 IIS 又会显示您看到的错误消息。另外,我相信web.coin

如果我理解正确,您可能需要修改您的方法并构建使用此 instead 或将 Response.StatusCode 设置为 404(查看链接问题中 Jeff 的答案)

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 2011-09-23
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多