Я следовал за ответом на этом посте здесь , но я не могу заставить приложение перенаправить на пользовательскую страницу при обнаружении ошибки 404.
Когда я посещаю localhost:12345/error/NotFound
страница ошибки отображается нормально.Таким образом, контроллер для просмотра ссылки все есть.
Я установил тег <a>
с недопустимым именем контроллера, чтобы вызвать страницу ошибки.После нажатия на ссылку я перехожу на страницу ошибок браузера по умолчанию, а не на свою пользовательскую страницу.
Я попытался добавить <httpErrors existingResponse="PassThrough" />
к <system.webServer>
Я попытался закомментировать filters.Add(new HandleErrorAttribute());
в FilterConfig.cs
Я попытался настроить defaultRedirect
в своем файле web.config.
У меня ничего не получилось, и я не могу найти хорошую прямую документацию по этому вопросу.И, кажется, у людей разные подходы и разные решения, работающие на них, а не на других.Меня просто удивляет ...
Вот мой код:
Web.Debug.config:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<customErrors mode="On" defaultRedirect="~/Views/Error/Error">
<error redirect="~/Error/NotFound" statusCode="404" />
</customErrors>
</system.web>
</configuration>
Ошибка контроллера:
public class ErrorController : Controller
{
[AllowAnonymous]
public PartialViewResult Error()
{
return PartialView("Error");
}
[AllowAnonymous]
public PartialViewResult NotFound()
{
Response.StatusCode = 404;
return PartialView("Error");
}
}
Error.cshtml:
<code>@model System.Web.Mvc.HandleErrorInfo
@{
ViewBag.Title = "Error";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="list-header clearfix">
<span>Error</span>
</div>
<div class="list-sfs-holder">
<div class="alert alert-error">
An unexpected error has occurred. Please contact the system administrator.
</div>
@{
if (Model != null && HttpContext.Current.IsDebuggingEnabled)
{
<div>
<p>
<b>Exception:</b> @Model.Exception.Message<br />
<b></b> @Model.ControllerName<br />
<b></b> @Model.ActionName
</p>
<div style="overflow: scroll">
<pre>
@Model.Exception.StackTrace
}}
Местоположение Error.cshtml:
Есть ли что-то, что я делаю неправильно?Есть ли какие-то другие настройки, которые я должен обработать?Мой путь перенаправления должен указывать на error.cshtml или на его местоположение?