I have this setting:
public static void Initialize(ISessionFactory factory) { var container = new Container(); InitializeContainer(container, factory); container.RegisterMvcControllers( Assembly.GetExecutingAssembly()); container.RegisterMvcAttributeFilterProvider(); container.Verify(); DependencyResolver.SetResolver( new SimpleInjectorDependencyResolver(container)); } private static void InitializeContainer( Container container, ISessionFactory factory) { container.RegisterPerWebRequest<ISession>( () => factory.OpenSession(), true); }
The Initialize method is called in Application_Start :
public class WebApiApplication : HttpApplication { protected void Application_Start() { SimpleInjectorInitializer.Initialize( new NHibernateHelper( Assembly.GetCallingAssembly(), this.Server.MapPath("/")) .SessionFactory); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } }
But when I try to call the controller action, I get an ArgumentException :
The type 'PositionReportApi.Controllers.PositionsController' does not have a default constructor
Stack trace:
in System.Linq.Expressions.Expression.New (type type) in System.Web.Http.Internal.TypeActivator.Create [TBase] (instanceType type) in System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessrolD request Hesspler, Request controllerDescriptor, type controllerType)
I can not register ISession .
How to register an ISession created using factory?
dependency-injection session nhibernate simple-injector registration
mrt181 Jul 05 '12 at 15:05 2012-07-05 15:05
source share