Вам нужно нажать на стрелки в правом верхнем углу или нажать «Shift + Enter»
В Web.config, изменение customErrors:
<system.web>
<customErrors mode="On">
</customErrors>
, Если режим будет или Выключен или RemoteOnly, то Вы будете видеть желтый экран смерти вместо пользовательской ошибочной страницы. Обоснование состоит в том, что разработчики обычно хотят более подробную информацию о желтом экране смерти.
Важно: Будьте осторожны, чтобы на самой странице с ошибкой не было ошибки!
Если это так, вы получите страницу с пользовательской ошибкой ASP.NET и закончить тем, что ходят кругами и рвут вам волосы. Просто удалите со страницы все, что может вызвать ошибку, и протестируйте ее.
Также в отношении включения или выключения 'customErrors' существует несколько факторов, влияющих на то, является ли дружественная страница ошибок (ваш Errors.aspx) страница будет отображаться или нет.
См. этот блог (кроме нижеприведенного)
HttpContext.IsCustomErrorEnabled - просматривает три разных источника
- Розничное свойство раздела
в web.config. Это полезное свойство для установки при развертывании ваше приложение к производству сервер. Это отменяет любые другие настройки для пользовательских ошибок. - Свойство режима раздела
в web.config. Эта настройка указывает, являются ли пользовательские ошибки включены вообще, и если да, то ли они включены только для удаленных запросов. - Свойство IsLocal объекта HttpRequest. Если пользовательские ошибки включены только для удаленных запросов, вам нужно знать, исходит ли запрос от удаленный компьютер.
Идея здесь в том, что вы можете отключить 'customErrors' во время разработки - когда вы действительно хотите видеть ошибки, а затем включить его только для производства.
Эта статья MSDN обсуждает атрибут дополнительно.
Другой причиной этой проблемы может быть
В приложении Template MVC (сгенерированном VS2008 / VS2008 Express) Error.aspx (сгенерированный VS) использует главную страницу.
Если главная страница обращается к любому ViewData, она выдаст исключение с нулевой ссылкой, тогда error.aspx не будет отображаться.
Используйте этот простой код как свой Error.aspx, он решит проблему (вместе с CustomErrors = On)
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>" %>
<%= Model.Exception.Message %>
Я тоже боролся с этим, и теперь я думаю, что понимаю проблему.
Вкратце, требования к [HandleError]
работают должным образом:
Вы должны включить настраиваемые ошибки в web.config И вы также должны указать, где находится ваше окно просмотра ошибок. находится в теге
.
Пример:
<customErrors mode="On" defaultRedirect="Error" />
Отсутствие части defaultRedirect = "Error"
вместо этого приведет к ошибке 500 в браузере - НЕ на странице ошибок ASP.NET (YSOD).
Также вам не обязательно находиться в режиме Release. Я тестировал это с помощью сборки отладки, и она отлично работала.
Моей средой была Visual Studio 2010 с использованием .NET 4 и стандартного шаблона проекта «Веб-приложение ASP.NET MVC 2».
Что меня смутило, так это документация MSDN для класса HandleErrorAttribute. В нем прямо не говорится, что вы должны включать настраиваемые ошибки в web.config . И я решил, что все, что мне нужно, это атрибут [Handle Error]
.