Application_Error отображает страницу на локальном хосте, но не в рабочей среде (www)

#c# #asp.net-mvc #iis #global-asax

#c# #asp.net-mvc #iis #глобальный-asax

Вопрос:

У меня есть Application_Error, который отображает страницу с ошибкой:

     private void Application_Error(object sender, EventArgs e)
    {

        Exception exception = Server.GetLastError();

        // A good location for any error logging, otherwise, do it inside of the error controller.

        Response.Clear();
        HttpException httpException = exception as HttpException;

        RouteData routeData = new RouteData();

        routeData.Values.Add("controller", "Error");
        routeData.Values.Add("action", "Index");

        // Clear the error, otherwise, we will always get the default error page.
        Server.ClearError();

        routeData.Values.Add("id", httpException.GetHttpCode());
        Response.StatusCode = httpException.GetHttpCode();
        Context.Response.ContentType = "text/html";

        // Call the controller with the route
        IController errorController = new ErrorController();
        errorController.Execute(new RequestContext(new HttpContextWrapper(Context), routeData));


    }
  

работает на моем локальном компьютере без проблем. когда я запускаю ее в рабочую среду, она отображает обычную страницу asp 404 вместо страницы, которую контроллер должен обслуживать.

Даже на рабочем сервере, когда я использую localhost вместо www , это работает.

я должен добавить, что у меня нет настроек в web.config для customerrors. я попытался отключить их, и это тоже не помогло.

мне кажется, что причиной этого является URL, но я не могу понять, почему / как.

Есть идеи, как решить проблему?

Комментарии:

1. Глупый вопрос: есть ли у вас способ убедиться, что ваш settings.DevelopmentMode возвращает ожидаемое значение в РАБОЧЕЙ СРЕДЕ? Иногда я игнорирую самые простые вещи…

2. @DavidTansey для рабочей среды установлено значение false. Это жестко запрограммировано в приложении и всегда возвращает false.

3. Вы включили подробные ошибки в iis? это иногда заменяет ваши сообщения об ошибках стандартной страницей.

Ответ №1:

В вашем методе Application_Error, пожалуйста, попробуйте добавить это…

 Response.TrySkipIisCustomErrors = true;