问题:当我使用Order
属性的HandleError
属性时,首先应用最高订单号,而不是最低的。
详情
我想设置我的控制器以这种方式处理异常:
CustomException
,请使用“CustomError”视图。使用默认的MVC项目模板,我已完成以下操作:
HandleErrorAttribute
。web.config
。然后我将这些属性添加到HomeController
类:
[HandleError(ExceptionType = typeof(Exception), View = "Error")]
[HandleError(ExceptionType = typeof(CustomException), View = "CustomError")]
这样可以正常工作 - 如果抛出CustomException
,则会显示“CustomError”视图;如果抛出Exception
,则会显示“错误”视图。
但是,我认为Order
属性上的HandleError
属性会使事情更明确。来自MSDN page:
整数值越大,过滤器的优先级越低 是
由此,我认为以下代码会导致在所有情况下都显示“错误”视图:
[HandleError(Order = 1, ExceptionType = typeof(Exception), View = "Error")]
[HandleError(Order = 2, ExceptionType = typeof(CustomException), View = "CustomError")]
但事实并非如此;这会导致与未指定Order
属性时相同的行为。如果我交换订单, 此 会导致显示“错误”视图,即使抛出CustomException
也是如此。
基本上,实际的订单优先级似乎与文档完全相反。我做错了还是这个错误?
答案 0 :(得分:4)
答案 1 :(得分:0)
感谢您发布此问题!信不信由你,三年后微软对此功能的MSDN documentation仍然不正确。我已经向ASP.NET团队提交了bug report来解决这个问题。