¿Por qué HttpContext.Current.Session es nulo en Global.asax?

Estoy usando VS2010 y creé un asp simple. aplicación de formularios web, usando el servidor de desarrollo para probarlo.
Intento almacenar datos de usuario, consultados desde el servidor sql, en la sesión, ya que no quiero acceder a la base de datos en cada solicitud. Estoy usando los métodos 'Application_AuthenticateRequest' y 'Session_Start'.
Primera ronda: se solicitó AuthenticateRequest. Se ejecutó el siguiente código:

public static void Initialize(string login_name, bool force_refresh)
    {
      HttpSessionState Session = HttpContext.Current.Session;
      object o = Session == null ? null : Session["EMPLOYEE_DATA"];
      if (force_refresh || o == null || o.GetType() != typeof(Employee) || (o as Employee).login_name!= login_name)
      {
        _current = UIManager.GetEmployee(login_name);
        if (Session != null)
        {
          Session["EMPLOYEE_DATA"] = _current;
        }
      }
      else
      {
        _current = (Employee)o;
      }
    }

La variable _current es un campo estático privado publicado a través de una propiedad estática. En la primera ronda, la sesión es nula, y creo que está bien porque Session_Start aún no se ha llamado. El Session_Start se ve así:

protected void Session_Start(object sender, EventArgs e)
{
  Session["EMPLOYEE_DATA"] = EmployeeFactory.Current;
}

En la siguiente ronda, no se llama a Session_Start, por supuesto, pero en AuthenticateRequest no puedo acceder a la sesión. HttpContext.Current.Session es nulo y la referencia this.Session arroja una HttpException dice que "El estado de sesión no está disponible en este contexto".

Sin embargo, puedo acceder a la sesión desde cualquiera de los eventos page_load pero es una mala práctica, creo que pongo autenticación cada page_load. ¿Alguna idea de cómo puedo acceder a la sesión?

Gracias por el consejo,
Péter