SimpleInjector: Injection funktioniert nicht mit der MVC 4 ASP.NET-Web-API

Ich habe dieses Setup:

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);
}

Die Initialize-Methode wird aufgerufenApplication_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);
    }
}

Aber wenn ich versuche, die Controller-Aktion aufzurufen, erhalte ich eineArgumentException:

Typ 'PositionReportApi.Controllers.PositionsController' hat keinen Standardkonstruktor

Stack-Trace:

at System.Linq.Expressions.Expression.New (Typ type) at System.Web.Http.Internal.TypeActivator.Create [TBase] (Typ instanceType) at System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage request, HttpCont controllerDescriptor, Typ controllerType)

Ich kann mich nicht registrierenISession.

Wie registriere ich eine ISession, die von einer Factory erstellt wurde?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage