gpt4 book ai didi

asp.net-mvc - ErrorAttribute vs OnException vs Application_Error

转载 作者:行者123 更新时间:2023-12-02 04:21:15 25 4
gpt4 key购买 nike

我想处理应用程序范围的错误并在 asp.net mvc 中显示 ErrorView 页面。有 3 种方法可以做到这一点(或者我知道)。

1) ErrorAttribute in BaseController:Controller class.
Can be used on individual Action/Controller/BaseController.
2) Override OnException() in the BaseController:Controller class.
Will work on Controllers derived from BaseController
3) Application_Error in Global_aspx.

什么是最佳实践。应使用这些方法中的哪一种来进行应用程序范围的错误处理,或者我们应该使用多种方法还是只使用一种方法。

如果我们在 BaseController 上处理 ErrorAttribute 或 OnException() 上的错误,我们是否仍然应该在 Application_Error() 中处理它。

我们什么时候应该使用Application_Error()?

最佳答案

  1. HandleErrorAttribute 是通过属性应用的 MVC 过滤器。您可以提供一个 View 名称以在发生异常时显示,还可以指定此过滤器适用的异常的基本(或特定)类型。如果未提供 View 名称,它将查找名为“Error”的 View 。正如您已经注意到的,您可以将其应用于各种范围。它允许您根据异常指定不同的“错误页面” View 。

  2. Controller.OnException 是一个方法,如果您的任何操作最终抛出错误,就会调用该方法。

  3. 以上两者都是 MVC 概念,也是 MVC 管道的一部分,它位于 ASP.NET 管道的顶部,如果您使用上述方法处理异常,它不会传播到 Application_Error,但是像 http 错误 404、500 之类的东西,如果我没记错的话还会这样。

用什么?

一定要研究 ELMAH 以进行应用程序范围的错误日志记录和我的 blog post关于 ELMAH 和 ASP.NET MVC

关于显示错误页面,您应该只使用 [HandleError]HandleErrorAttribute 就可以了,因为它已经为您处理了所有内容(可选过滤和可选自定义错误页面)每个异常类型)。

关于asp.net-mvc - ErrorAttribute vs OnException vs Application_Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6318104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com