問題:當我使用HandleError
屬性的Order
特性,最高順序號被首先施加,相對於最低的第一個。ASP.Net MVC 3 - 在HandleError屬性中的順序似乎反向工作?
詳細
我想建立我的控制器以這種方式來處理異常:
- 如果異常的類型是
CustomException
,使用「CustomError」視圖。 - 否則,請使用默認的「錯誤」視圖。
使用默認的MVC項目模板,我已經做了以下內容:
- 刪除從全局過濾器的
HandleErrorAttribute
。 - 打開
web.config
中的自定義錯誤。
然後,我將這些屬性添加到HomeController
類:
[HandleError(ExceptionType = typeof(Exception), View = "Error")]
[HandleError(ExceptionType = typeof(CustomException), View = "CustomError")]
這工作正常 - 如果CustomException
被拋出,「CustomError」視圖顯示;如果引發了Exception
,則會顯示「錯誤」視圖。
但是,我認爲HandleError
屬性上的Order
屬性會使事情更加明確。來自MSDN page:
整數值越大,過濾器 的優先級越低。
由此,我想到的是,下面的代碼將導致顯示在任何情況下的「錯誤」的觀點:
[HandleError(Order = 1, ExceptionType = typeof(Exception), View = "Error")]
[HandleError(Order = 2, ExceptionType = typeof(CustomException), View = "CustomError")]
但這種情況並非如此;這會導致與未指定Order
屬性時相同的行爲。如果我交換訂單,這個會導致顯示「錯誤」視圖,即使CustomException
被拋出。
基本上,實際的訂單優先級似乎與文檔完全相反。我做錯了什麼或者這是一個錯誤?