#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;