我的测试项目有一些问题。
C#,ASP。净MVC 5,>NET Framework 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>
我在我的网站上写了一个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和其他一些异常。我得到了一个custon错误视图作为响应。
但当我抛出HttpException而不更改上面代码中的任何内容时,我会被重定向到StaticError。html。
如何抛出HttpException并获取自定义错误视图,而不是黄色的死亡熨平板或默认的重新更正页面?
非常感谢您的帮助。