SimpleInjector: la inyección no funciona con MVC 4 ASP.NET Web API

Tengo esta configuración:

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

El método de inicialización se llama enApplication_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);
    }
}

Pero cuando trato de llamar a la acción del controlador me sale unArgumentException:

El tipo 'PositionReportApi.Controllers.PositionsController' no tiene un constructor predeterminado

Rastreo de pila:

en System.Linq.Expressions.Expression.New (Type type) en System.Web.Http.Internal.TypeActivator.Create [TBase] (Type instanceType) en System.Web.Http.Eppl.ppl.p.Eas.png.png.png.png controllerDescriptor, escriba controllerType)

No puedo registrar unISession.

¿Cómo registro un ISession creado por una fábrica?

Respuestas a la pregunta(1)

Su respuesta a la pregunta