Non riesco a configurare Windsor Container con asp.net web API, sebbene funzioni correttamente con controller regolare (IController).Impossibile inserire le dipendenze in Asp.net MVC 4 Web API Controller utilizzando Windsor Container
Ho controller regolare e controller api nello stesso progetto.
Ecco il codice per il regolatore regolare che lavora bene:
/// <summary>
/// Controller Factory class for instantiating controllers using the Windsor IoC container.
/// </summary>
public class WindsorControllerActivator : IControllerActivator
{
private readonly IWindsorContainer container;
public WindsorControllerActivator(IWindsorContainer container)
{
this.container = container;
}
public IController Create(RequestContext requestContext, Type controllerType)
{
var controller = (IController)container.GetService(controllerType);
return controller;
}
}
in global.asax.cs
container.Register(Component.For<IWindsorContainer>().Instance(container));
container.Register(Component.For<IControllerActivator>().ImplementedBy<WindsorControllerActivator>());
e sotto è il codice problematico:
public class WindsorApiControllerActivator : IHttpControllerActivator
{
private readonly IWindsorContainer container;
public WindsorApiControllerActivator(IWindsorContainer container)
{
this.container = container;
}
public IHttpController Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
var controller = (IHttpController)container.GetService(controllerType);
return controller;
}
}
e programma di installazione:
container.Register(Component.For<IHttpControllerActivator>().ImplementedBy<WindsorApiControllerActivator>());
tuttavia, non sono mai in grado di eseguire WindsorApiControllerActivator.
quando, metto il debugger in WindsorControllerActivator, funziona come previsto, ma per WindsorApiControllerActivator non viene mai eseguito.
il vostro aiuto sarà apprezzato
Come si registra il contenitore come dependencyresolver? – nemesv
Perché personalizzi WindsorApiControllerActivator mentre non vedo alcun trattamento speciale? –
Cuong le: perché utilizzo l'oggetto Nhibernate Session nei controller api [HttpPost] pubblico IList Ricerca (modello SearchViewModel) { IList searchResultViewModels = SearchVenues (modello); ritorno ricercaResultViewModels; // return "Hello World"; } –
public ISession NSession {get; impostato; } VendorController pubblico (sessione di sessione) { NSession = sessione; } // GET api/