|
|
|
 |
 |
Dimon aka Manowar Blog. HttpContext в обработчиках событий HttpApplication |
 |
|
 |
 |
До недавнего времени я был свято уверен, что в процессе обработки запроса HttpContext.Current не может быть null. В связи с чем для доступа к классам контекста реквеста использовал всегда именно это выражение. Например для того, чтобы достучаться к кукам в обработчике Application.BeginRequest смело писал HttpContext.Current.Request.Cookies. Но сегодня я с неприятным удивлением обнаружил, что бывают ситуации, когда HttpContext.Current в обработчике события обработки реквеста может быть пустой . Причем почему он вдруг оказывался пустым я понять так и не смог. Если подробней, то дело было так - совершенствуя свою систему статистики я перенес вызов метода логирования в обработчик PreSendRequestHeaders дабы ловить StatusCode ответа. После чего в логах обнаруживаю достаточно немалое количество ошибок из метода логирования (срабатывал код обработчика Application.Error). При этом, что самое удивительное, реквест отдавался нормально (200 ответ и html код). Почему выполнение реквеста не прерывалось я уж не стал разбираться, меня больше интересовала ситуация как это исправить. И после некоторого кол-ва шаманских отладок я обнаружил удивительное - в некоторых случаях (в каких именно опять таки я так и не понял, вернее обломался разбираться) в обработчике PreSendRequestHeaders значение HttpContext.Current было равно null, но при этом значение (sender as HttpApplication).Context хранило абсолютно правильный контекст! Шок - это по нашему?
Вообщем мой всем совет - пользуйтесь в обработчиках события HttpApplication конструкцией (sender as HttpApplication).Context для доступа к контексту реквеста.
Если вдруг облом меня не сломает и я продолжу изыскания - расскажу чего у меня получилось нарыть.
Dimon aka Manowar
02 August 2006 23:19 Комментарии (5)
|
|
|
|
 |
 |
 |
 |
|
|