【问题标题】:Why should we use HandleErrorAttribute?为什么要使用 HandleErrorAttribute?
【发布时间】:2015-03-28 12:31:08
【问题描述】:

我是 MVC 的新手。我正在阅读有关 MVC 中的错误日志记录。

我开始了解HandleErrorAttribute。我对此有疑问。

假设我们将HandleErrorAttribute 放在Action 中。

<!-- language: c# -->
[HandleError(View = "Error")]
public ActionResult Index6()
{
    throw new Exception("Something terrible happened.");

    return View();
}

并在 web.config 中打开自定义错误

<customErrors mode="On">
</customErrors>

现在,如果该“索引操作”中发生任何未处理的异常,它将显示“视图/共享”文件夹中的 Error.cshtml。

但是我们可以在 web.config 的 customErrors 部分下设置一些配置来实现相同的行为。喜欢

<customErrors mode="On" defaultRedirect="~/Error">
    <error statusCode="404" redirect="~/Error/NotFound" />
</customErrors>

顺便提一下,我有一个带有“Index”操作的“ErrorController”,它返回“Views/Shared/Error.cshtml”视图。

那么,我的问题是我们为什么要使用HandleErrorAttribute?使用它有什么好处吗?

谢谢

【问题讨论】:

    标签: asp.net-mvc exception-handling custom-error-pages


    【解决方案1】:

    这个post 应该有助于解决问题

    【讨论】:

    • 那个帖子没有多大帮助。它描述了如何使用HandleErrorAttribute 来显示自定义错误页面而不是“黄页死亡”。我的问题是为什么应该使用 HandleErrorAttribute 来显示自定义错误页面,而不是像我在问题中提到的那样配置 Web.config 文件。
    • 好吧,您可以为处理程序指定特定的错误消息并为它们指定特定的视图。如博客中指定的示例所示:'[HandleError(ExceptionType = typeof(SqlException),View=" DatabaseError"][HandleError(ExceptionType = typeof(NullReferenceException),View="LameErrorHandling"]'...不太确定万一这在 web.config 中是可能的
    • 是的,这很好。我也不确定在 web.config 中是否可行。但我认为我们不需要为不同类型的异常显示不同的错误页面。对于任何类型的异常,我们可以只向用户显示一个通用错误页面。我们可以集成一些错误记录模块,如ELMAH 来记录实际错误,以便我们稍后检查发生的异常的详细信息。
    • 归根结底,这一切都取决于指定的要求/项目要求:)
    • 仅链接答案没有帮助。您应该从页面中获取相关内容并将其添加到您的答案中(如果您只是复制和粘贴,请注明出处)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 2012-08-22
    • 2016-09-12
    • 1970-01-01
    • 2020-11-07
    • 2011-07-27
    • 2020-05-05
    相关资源
    最近更新 更多