Объект сеанса может быть недоступен, это зависит от того, когда произошла ошибка.
Например, если в Begin_Request произошла ошибка, сеанс не будет доступен, так как он еще не создан.
Таким образом, в итоге иногда это будет работать, иногда нет, в зависимости от того, когда произошла ошибка.
Лучше всего проверить состояние объекта сеанса перед доступом к идентификатору сеанса, например,
HttpContext context = HttpContext.Current;
if (context != null && context.Session != null) ...