Я пробовал все возможные способы, которые нашел здесь (Как заставить пользовательские страницы ошибок работать в ASP.NET MVC 4) или здесь: http://benfoster.io/blog/aspnet-mvc-custom-error-pages, здесь: http://www.secretgeek.net/custom_errors_mvc, но, похоже, у меня ничего не работает.
Я упростил его до миниума, но все еще получаю уродливое стандартное сообщение об ошибке при переходе на несуществующую страницу.
Мой файл Error.cshtml находится в папке Views\Shared и выглядит так:
<div>
<span>Error occurred</span>
</div>
пробовал также:
@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Parking & Ticket Scan Information - Error";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div>
<span>Error occurred</span>
</div>
Мой web.config содержит:
<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/NotFound" statusCode="404" />
</customErrors>
но я также пробовал:
<customErrors mode="On" defaultRedirect="~/Error">
</customErrors>
Мой ErrorController похож на:
public class ErrorController : Controller
{
[HandleError]
public ViewResult Index()
{
return View();
}
}
(с или без атрибута [HandleError], с и без
public ViewResult NotFound()
{
Response.StatusCode = 404; //you may want to set this to 200
return View("NotFound");
}
Позже я добавил также маршрутизацию в Global.asax:
route.MapRoute(имя: "PageNotFound", URL-адрес: "{*url}", значения по умолчанию: новый {контроллер = "Ошибка", действие = "Индекс", id = UrlParameter.Optional}
Кажется, ничто не заставляет IIS показывать пользовательскую ошибку. Что еще я пробовал? Разумеется, закомментированы фильтры.Add(new HandleErrorAttribute()); Error.cshtml перемещен в папку Views.
Существуют ли какие-либо другие подходы, которые я мог бы использовать, чтобы включить его?