簡體   English   中英

HttpException 沒有被異常過濾器捕獲

[英]HttpException is not caught by exception filter

我在我的測試項目中遇到了一些問題。 C#、ASP .NET MVC 5、>NET 框架 4.5.1

出於某種原因,我的異常過濾器無法捕獲控制器拋出的 HttpException。 控制器代碼:

    [HttpGet]
    [HandleError(ExceptionType = typeof(HttpException), View = "Error")]
    public ViewResult Test()
    {
        throw new HttpException(404, "Not found!");
        return View();
    }

錯誤視圖:

@model HandleErrorInfo 
@{
   ViewBag.Title = "Sorry, something went wrong!";
   Layout = "~/Views/Shared/_BasicLayout.cshtml";
}
<h1>Error: @Model.Exception.Message</h1>
<h1>Status code: @Response.StatusCode</h1>
<div style="display:none;">@Model.Exception.StackTrace</div>

我在我的 web.config 中編寫了一個 customErrors 指令,並將 mode 屬性設置為“on”,並將 defaultRedirect 屬性設置為 /Content/StaticError.html

靜態錯誤.html

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
</head>
<body>
   <h1>ERROR</h1>
</body>
</html>

我嘗試拋出幾個異常,如 ArgumentOutOfRange、NullReference 和其他一些異常。 我得到了一個自定義錯誤視圖作為響應。 但是當我拋出 HttpException 而不更改上面代碼中的任何內容時,我被重定向到 StaticError.html。

如何拋出 HttpException 並獲得自定義錯誤視圖,而不是黃色死板或默認重定向頁面?

任何幫助表示贊賞。

HttpExceptionASP.MVC管道已知的一種特殊異常類型,它的目的是返回帶有特定錯誤代碼的 HTTP 響應,這實際上並不意味着不受控制的服務器錯誤,因此默認的HandleErrorAttribute對代碼為 500 以外的HttpException不執行任何操作。看這里.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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