问题:当我使用 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/