asp.net-mvc - ASP.Net MVC 3 - HandleError 属性中的顺序似乎向后工作?

标签 asp.net-mvc asp.net-mvc-3 handleerror

问题:当我使用 HandleError 属性的 Order 属性时,将应用最高订单号首先,而不是最低的优先。

详细信息

我想设置我的 Controller 以这种方式处理异常:

  • 如果异常的类型是 CustomException,则使用“CustomError” View 。
  • 否则,请使用默认的“错误” View 。

使用默认的 MVC 项目模板,我完成了以下操作:

  • 从全局过滤器中删除了 HandleErrorAttribute
  • web.config 中启用了自定义错误。

然后我将这些属性添加到 HomeController 类中:

[HandleError(ExceptionType = typeof(Exception), View = "Error")]
[HandleError(ExceptionType = typeof(CustomException), View = "CustomError")]

这工作正常 - 如果抛出 CustomException ,则会显示“CustomError” View ;如果抛出异常,则会显示“错误” View 。

但是,我认为 HandleError 属性上的 Order 属性会让事情变得更加明确。来自 MSDN page :

The greater the integer value is, the lower the priority of the filter is.

由此,我认为以下代码会导致在所有情况下显示“Error” View :

[HandleError(Order = 1, ExceptionType = typeof(Exception), View = "Error")]
[HandleError(Order = 2, ExceptionType = typeof(CustomException), View = "CustomError")]

但事实并非如此;这会导致与未指定 Order 属性时相同的行为。如果我交换订单,this 会导致显示“错误” View ,即使抛出 CustomException 也是如此。

基本上,实际的顺序优先级似乎与文档完全相反。我做错了什么还是这是一个错误?

最佳答案

关于asp.net-mvc - ASP.Net MVC 3 - HandleError 属性中的顺序似乎向后工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6874931/

相关文章:

asp.net-mvc - 升级到 ASP.NET MVC 5 后可以卸载哪些内容

asp.net - 使用 Moq 对 View 属性进行单元测试

c# - 通过 MVC3 AJAX 调用使用线程或任务

asp.net-mvc - 映射时如何处理循环引用?

javascript - asp.net mvc 显示 ViewBag 字典到 javascript

c# - Asp.NET MVC3 - URL 中没有区域的访问区域 Controller

asp.net-mvc - Asp.net mvc 选择列表

asp.net-mvc - ASP.NET MVC 用户友好的 401 错误

jquery - 如何使用 MVC 从 catch block 重定向到另一个 View