webapi mvc example asp.net-mvc nhibernate dependency-injection autofac

asp.net-mvc - mvc - autofac web api 2 owin example



¿Cómo me aseguro de que haya una ISession NHibernate por solicitud usando Autofac? (1)

Tengo el siguiente código en un Módulo Autofac que se utiliza en mi método Application_Start:

builder.Register(c => new Configuration().Configure().BuildSessionFactory()) .SingletonScoped(); builder.Register(c => c.Resolve<ISessionFactory>().OpenSession()) .HttpRequestScoped(); builder.Register<NHibernateSomethingRepository>().As<ISomethingRepository>();

El constructor del repositorio toma una ISession como argumento. Pero termino con una sesión para toda la aplicación, aunque explícitamente solicité que fuera HttpRequestScoped.

He configurado el módulo HTTP ContainerDisposal.

De acuerdo con la documentación , tienes que crear un contenedor anidado, pero estoy dejando que Autofac conecte las dependencias automáticamente.

¿Que debería hacer?

¡Gracias!


Encontré el problema, entonces responderé mi propia pregunta.

Registré mi repositorio con el alcance predeterminado, que en Autofac es el alcance de singleton. Debería haber hecho esto:

builder.Register<NHibernateSomethingRepository>() .As<ISomethingRepository>() .HttpRequestScoped;