[英]Custom HandleErrorAttribute - How to set result without ASP.NET overriding it?
我正在努力使我的ASP.NET MVC應用程序正確處理HTTP狀態代碼,並在需要時顯示它們的視圖。 我避免了所有開箱即用的錯誤頁面處理,因為它不是語義上的(例如,框架始終使用customErrors
執行302重定向)。
我有一個AuthorizeAttribute
和ActionFilterAttribute
都可以正常工作,並且顯示了我的自定義視圖。 但是,我的HandleErrorAttribute
工作不正常。
public override void OnException(ExceptionContext context) {
HttpStatusCode httpStatusCode = HttpStatusCode.InternalServerError;
var e = context.Exception;
if (e is HttpException) {
var httpException = (HttpException)e;
httpStatusCode = (HttpStatusCode)httpException.GetHttpCode();
}
context.Result = MyResultBuilder.SetViewByHttpCode(context.HttpContext.Request, httpStatusCode, context.Controller.ViewData.ModelState);
}
我正在設置Result
屬性,但是在某些時候管道覆蓋了我的結果,因為我最終得到的是死亡黃屏(YSOD)而不是我定義的視圖結果。
如何在HandleErrorAttribute
設置自定義視圖結果?
嘗試將ExceptionHandled屬性設置為true;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.