ASP.NET: как правильно завершить работу с помощью настройки web.config? - PullRequest
3 голосов
/ 07 июля 2011

Есть ли способ отобразить страницу ошибки (с использованием некоторых настроек в web.config) при сбое приложения asp.net?

У меня есть приложение, база данных которого регулярно обновляется. Если база данных обновляется, когда пользователь использует приложение, приложение часто вылетает. Если веб-страница приложения обновлена, то все снова в порядке.

Как лучше всего справиться с такой ситуацией? Есть ли способ направить все сбои на веб-страницу, которая говорит пользователю просто обновить? Спасибо.

Ответы [ 3 ]

5 голосов
/ 07 июля 2011

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

<customErrors mode="RemoteOnly" defaultRedirect="~\ErrorPages\GenericError.htm">
  <error statusCode="403" redirect="~\ErrorPages\NoAccess.htm" />
  <error statusCode="404" redirect="~\ErrorPages\PageNotFound.aspx" />
</customErrors>

Установите mode на On для всех запросов или RemoteOnly, чтобы разрешить настраиваемые ошибки только для удаленных запросов.Затем определите столько страниц ошибок, сколько вам нужно для различных ошибок.


Во время обновления приложения вы можете рассмотреть вопрос о размещении файла app_offline.htm в корневом каталоге вашего веб-приложения.Если этот файл присутствует, он отображается для всех входящих запросов.См. http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx для получения дополнительной информации.

3 голосов
/ 07 июля 2011

Лучше всего, когда вы захотите внести какие-либо изменения в работающий веб-сайт / базу данных, это закрыть сайт, поместив файл app_offline.htm в папку приложения.Пользователь не должен видеть ваше приложение, если оно падает.

2 голосов
/ 07 июля 2011

Вы также можете перехватить ошибки в вашем global.asax, в котором есть обработчик ошибок, запросить там ошибку (используя что-то вроде Exception ex = Server.GetLastError ()) и если он соответствует критериям для всего, что вы ищете для, перенаправьте их на все, что вы хотите.

...