Ошибки, не обнаруженные Global.asax? - PullRequest
4 голосов
/ 14 марта 2012

В моем проекте есть страница с ошибкой oops.aspx.У нас есть следующий код в global.asax:

protected void Application_Error(object sender, EventArgs e)
{
    Server.Transfer("~/oops.aspx", true);
}

oops.aspx способен извлечь ошибку, сгенерировать приятное электронное письмо на сервер и представить сообщение об ошибке пользователю.

Использование Server.Transfer сохраняет URL-адрес, информацию о форме и другую полезную информацию по устранению неполадок.В какой-то момент в oops.aspx при составлении письма я беру Request.RawUrl и включаю его в письмо.Это URL (с параметрами строки запроса) страницы, которая вызвала ошибку.

У нас также есть это в web.config:

<customErrors mode="On" defaultRedirect="oops.aspx"></customErrors>

Когда система перенаправляет из-за ошибкиосновываясь на этом, он перенаправляет на /oops.aspx?aspxerrorpath=/Clients/EditClient.aspx (иногда с /, иногда с% 2f разделителями пути).Информация о Querystring и Exception теряется, поэтому электронная почта и сообщения, генерируемые oops.aspx, являются редкими и мало что говорят о том, что происходило.

В последнее время я получаю много ошибок такого рода.Ошибки случаются небольшими сгустками, по нескольку из них за несколько минут, а затем и без ничего в течение нескольких часов.Они происходят по всему сайту (включая WebResource.axd и т. П.), Что заставляет меня думать, что это не конкретная ошибка на нашем сайте, а нечто, происходящее на более низком уровне, например проблема с сервером сеансов или что-то в этом роде.

Итак, при всем этом мой актуальный вопрос:

У меня есть ошибки на сайте, которые происходят таким образом, что они не попадают в global.asax.Что может вызвать такие ошибки и как их устранить?

1 Ответ

6 голосов
/ 14 марта 2012

Поскольку вы включили пользовательские ошибки в своем файле web.config, исключение будет перехвачено до того, как Application_Error выполнится и перенаправит вас на oops.aspx. Если вы не хотите, чтобы это происходило, не включайте пользовательские ошибки в вашем файле web.config. Таким образом, все ошибки будут проходить через Application_Error при условии, что вы настроили IIS для запуска пула приложений в режиме интегрированного конвейера.

...