ASP.NET MVC3: customErrors в Web.Config игнорируется на локальном хосте и на сервере, пользовательская страница ошибки отображается только на локальном хосте - PullRequest
3 голосов
/ 04 ноября 2011

Я пытаюсь получить настраиваемую страницу 404, которую мы создали для отображения вместо страницы 404 по умолчанию, созданной сервером.Он работает должным образом при локальной отладке приложения, но не при запуске приложения на сервере.И их файлы web.config выглядят точно так же.

    <customErrors mode="On" defaultRedirect="~/Error/Index">
        <error statusCode="404" redirect="~/Error/NotFound" />
    </customErrors>

Странная вещь, когда что-то в этом изменено - установка режима в «Выкл» или «RemoteOnly», изменяя «~ / Error» на«Ошибка», или удаление раздела полностью - результат всегда один и тот же: я получаю красивую страницу 404 локально, но не на сервере.

При локальной отладке этот метод выполняется так, как задумано:

    public class ErrorController : BaseController
    {
        [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult NotFound()
        {
            Response.StatusCode = (int)HttpStatusCode.NotFound;
            ErrorSignal.FromCurrentContext().Raise(new HttpException(404, Request.Url.PathAndQuery + " was not found"));
            return View();
        }
    }

Поскольку он нашел этот маршрут в Global.asax:

routes.MapRoute(
"NotFound",
"{*path}",
    new { controller = "Error", action = "NotFound" });

Любой и все советы приветствуются.

Ответы [ 3 ]

3 голосов
/ 08 ноября 2011

Проблема решена - я обратился к парню, который управляет нашими настройками IIS, и попросил его изменить путь страницы ошибок на 404 с тем, чтобы он перенаправлял на URL, URL-адрес которого "/Error/NotFound/Index.aspx".Но, очевидно, это просто эквивалент добавления этого в раздел system.webServer:

<httpErrors>
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound" responseMode="ExecuteURL" />
</httpErrors>
1 голос
/ 04 ноября 2011

Похоже, что 404 вы получаете на сервере, потому что ваш пользовательский 404 не может быть найден.Вы можете перейти на пользовательский 404?

0 голосов
/ 04 ноября 2011

Ваш iis на сервере не работает в интегрированном режиме?Если так, то 404s никогда не попадут на asp.net. Какая версия iis?Убедитесь, что это не в классическом режиме.

...