Inyectar una dependencia en Global.asax

Estoy iniciando una aplicación web con MVC3 y Ninject. Hay una dependencia que también necesito en el archivo Global.asax que debe ser un singleton.

Pensé que debería ser así:

public class MvcApplication : NinjectHttpApplication
{
    IUserAuthentication _auth;

    public MvcApplication()
    {
        base.AuthenticateRequest += new EventHandler(MvcApplication_AuthenticateRequest);
    }

    protected override IKernel CreateKernel()
    {
        var _kernel = new StandardKernel(new SecurityModule());
        _auth = _kernel.Get<IUserAuthentication>();

        return _kernel;
    }

    void MvcApplication_AuthenticateRequest(object sender, EventArgs e)
    {
        _auth.ToString();
    }

Pero entonces vi que_auth es nulo cuandoMvcApplication_AuthenticateRequest se llama

Entonces intenté así:

public class MvcApplication : NinjectHttpApplication
{
    ItUserAuthentication _auth;
    IKernel _kernel;

    public MvcApplication()
    {
        _kernel = new StandardKernel(new SecurityModule());
        _auth = _kernel.Get<IUserAuthentication>();
        base.AuthenticateRequest += new EventHandler(MvcApplication_AuthenticateRequest);
    }

    protected override IKernel CreateKernel()
    {
        return _kernel;
    }

    void MvcApplication_AuthenticateRequest(object sender, EventArgs e)
    {
        _auth.ToString();
    }

Pero ahora puedo ver que se llama al constructor varias veces, por lo tanto, tendré varios IKernel, y supongo que las instancias singleton no serán tan únicas en el alcance de mi aplicación.

¿Cómo debería hacerlo? ¿Usando una variable estática?

Respuestas a la pregunta(4)

Su respuesta a la pregunta