У меня были некоторые проблемы в моем тестовом проекте.
C #, ASP .NET 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 в своем файле web.config и установил для атрибута mode значение «on», а для атрибута defaultRedirect - /Content/StaticError.html
.
StaticError.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 и получить собственное представление об ошибке вместо желтой стяжки смерти или страницы перенаправления по умолчанию?
Любая помощь приветствуется.