MVC3, Unity Framework y por sesión Lifetime Manager Issue

En una palabra simple, trato de crear un administrador de por vida para el marco de Unity utilizando Http Session en mi proyecto MVC3. Mi implementación de muestra del administrador de por vida es:

    public class UnityPerSessionLifetimeManager : LifetimeManager
    {
        private string sessionKey;
        private HttpContext ctx;

        public UnityPerSessionLifetimeManager(string sessionKey)
        {
            this.sessionKey = sessionKey;
            this.ctx = HttpContext.Current;
        }

        public override object GetValue()
        {
            return this.ctx.Session[this.sessionKey];
        }

        public override void RemoveValue()
        {
            this.ctx.Items.Remove(this.sessionKey);
        }

        public override void SetValue(object newValue)
        {
            this.ctx.Session[this.sessionKey] = newValue;
        }
    }

En mi global.asax.cs, reemplacé la fábrica de controladores predeterminada con mi propia UnityControllerFactory

    public class UnityControllerFactory : DefaultControllerFactory
    {
        private IUnityContainer container;

        public UnityControllerFactory(IUnityContainer container)
        {
            this.container = container;
            this.RegisterServices();
        }

        protected override IController GetControllerInstance(RequestContext context, Type controllerType)
        {
            if (controllerType != null)
            {
                return this.container.Resolve(controllerType) as IController;
            }

            return null;
        }

        private void RegisterServices()
        {
            this.container.RegisterType<IMyType, MyImpl>(new UnityPerSessionLifetimeManager("SomeKey"));
        }
    }
}

Establezco puntos de interrupción en cada función deUnityPerSessionLifetimeManager clase, noté que cuando la fábrica de controladores intenta resolver las dependencias de mi controlador, la HttpContext.Session es en realidad nula, por lo que el código no se recupera de la sesión o se guarda en la sesión.

¿Alguna idea de por qué la sesión es nula en esta etapa?

Respuestas a la pregunta(2)

Su respuesta a la pregunta