5 августа 2011 г.

Перехват всех исключений на сайте ASP.NET

Перехват всех исключений на сайте ASP.NET происходит в обработчике события Application_Error. Его вы можете найти в файле global.asax. Пример такого метода:

void Application_Error(object sender, EventArgs e)
{
Logger logger = LogManager.GetCurrentClassLogger();
Exception ex = Server.GetLastError();
while (ex.InnerException != null)
ex = ex.InnerException;
Response.Write("Ошибка");
logger.Error("{0} on {1}: {2}", ex.GetType(), ((HttpApplication)sender).Context.Request.Url, ex.Message);
Server.ClearError();
}

Здесь создаётся объект для логирования ошибки (библиотека NLog). Затем получаем объект последнего исключения при помощи метода Server.GetLastError(). Затем в цикле доходим до самого нижнего исключения, чтобы получить наиболее подробную информацию. Потом отправляем в браузер пользователя сообщение о том, что произошла ошибка, при этом саму ошибку ему не показываем. Делаем запись в лог и удаляем последнее исключение.

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

Отправить комментарий