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?