- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想处理应用程序范围的错误并在 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()?
最佳答案
HandleErrorAttribute
是通过属性应用的 MVC 过滤器。您可以提供一个 View 名称以在发生异常时显示,还可以指定此过滤器适用的异常的基本(或特定)类型。如果未提供 View 名称,它将查找名为“Error”的 View 。正如您已经注意到的,您可以将其应用于各种范围。它允许您根据异常指定不同的“错误页面” View 。
Controller.OnException
是一个方法,如果您的任何操作最终抛出错误,就会调用该方法。
以上两者都是 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/
finally和 onException是模块 Control.Exception 中的两个函数,它们具有相同的签名但行为不同。 Here是文件。 对于 finally , 它说: finally :
我有带有 OnException 处理程序的 BaseController 类。 public class ApiBaseController : Controller { protected
在单个 Camel 路由中,我有两个 url 调用,调用两个不同的应用程序。 to("http://datasource1/data) //some process to("http://dataso
我有一个带有主线程和 JMS 线程的应用程序,它们通过 ActiveMQ 5.15.11 相互通信。我可以很好地发送消息,但是我想要一种发回状态或错误的方法。我注意到 MessageListener
我对 apache Camel 相当陌生,但我想使用 onException 构建异常处理。由于我想捕获异常并提供响应,但也想将错误记录到外部系统,所以我希望有 2 个 bean 来处理异常。 目前我
我正在尝试测试我的 onException 代码,但它在单元测试下没有触发。我可以 doCatch() 路由中的异常,但否则它只是传递回单元测试代码。我将其归结为硬编码的 throwException
我想捕获路由中的所有异常。 我添加这个 OnExeption : onException(Exception.class).process(new MyFunctionFailureHandler()
我有以下自定义方面,并尝试在项目和类级别应用它。在所有情况下,即使是有意除以零,也永远不会调用 OnException 方法。我做错了什么? [Serializable] public class A
我在 JPA 中使用 Camel 2.10。 在我的上下文中,我有 2 条路线。 路由 1 从 JPA 端点(db 表)消费,进行一些处理(在 bean 中),然后将消息转发到路由 2。如果在处理过程
我试图在全局 onException 中捕获我自己的异常。在捕获 Jaxb 异常后,我抛出了异常。但是 CustomException 不会被 onException 捕获 onException(E
我正在使用 Delphi 7 并尝试处理程序运行期间抛出的所有可能的异常。我使用了 Application.OnException := HandlerProcedure;处理异常,但当异常发生时,H
我正在写来自 Camel 和 Spring 的世界! 我正在使用此 recipe 以编程方式添加路由. 基本上,您获取 Camel 上下文并使用文件添加路线。 这就是问题: 在运行时添加的路由不会触发
我正在尝试使用 ExceptionFilterAttribute 为 Web Api 实现异常处理。我已经继承了ExceptionFilterAttribute 类并覆盖了onException 方法
我在 Selenium 测试中使用自定义 WebDriverEventListener 来进行日志记录和屏幕截图。效果很好: 例如,当在浏览器窗口中找不到某个元素时,网络驱动程序会抛出异常,并正确触发
我在 Camel 环境中遇到onException问题。我使用的是通用错误处理程序,它会在发生异常时尝试使用xpath从交换中提取其他错误信息。 onException包含try/catch子句,可防
我正在探索一些 AOP,看来 .NET PostSharp 是可行的方法。 我想在发生异常时对数据库做一些简单的记录。然而,我发现很难找到任何超越基础知识的使用 PostSharp 的真正可靠的例子。
我有一个路由,doTry() - doCatch() 对用于特定路由和一般的 onException()。 onException(Exception.class) .handled(true
有什么区别: ... 和: ... 根据 this article ,结合使用它们是一个“强大的组合”。怎么会这样?他们各自承担什么角色,他们如何相互补充? 最佳答案 err
在这里尝试理解 MVC 管道: 顺序好像是这样的: 授权过滤器 OnActionExecuting Action 执行 OnActionExecuted OnResultExecuting 创建操作结
我有以下代码: [Serializable] class ExceptionAspectHandler:OnExceptionAspect { public overr
我是一名优秀的程序员,十分优秀!