簡體   English   中英

Custom HandleErrorAttribute-如何在不覆蓋ASP.NET的情況下設置結果?

[英]Custom HandleErrorAttribute - How to set result without ASP.NET overriding it?

我正在努力使我的ASP.NET MVC應用程序正確處理HTTP狀態代碼,並在需要時顯示它們的視圖。 我避免了所有開箱即用的錯誤頁面處理,因為它不是語義上的(例如,框架始終使用customErrors執行302重定向)。

我有一個AuthorizeAttributeActionFilterAttribute都可以正常工作,並且顯示了我的自定義視圖。 但是,我的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM