Ich kann Windsor Container mit ASP.net Web API nicht konfigurieren, obwohl es mit regulären Controller (IController) funktioniert.Kann keine Abhängigkeiten in Asp.net MVC 4 Web API Controller mit Windsor Container injizieren
Ich habe reguläre Controller und API-Controller in demselben Projekt. Hier
ist der Code für normale Steuerung, die feinen Arbeiten:
/// <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;
}
}
und in global.asax.cs
container.Register(Component.For<IWindsorContainer>().Instance(container));
container.Register(Component.For<IControllerActivator>().ImplementedBy<WindsorControllerActivator>());
und unten ist die problematische Code:
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;
}
}
und Installateur:
container.Register(Component.For<IHttpControllerActivator>().ImplementedBy<WindsorApiControllerActivator>());
jedoch kann ich WindsorApiControllerActivator nie ausführen.
wenn, ich legte Debugger in WindsorControllerActivator es funktioniert wie erwartet, aber für WindsorApiControllerActivator es nie ausgeführt werden.
Ihre Hilfe wird geschätzt werden
Wie registrieren Sie Ihren Container als den dependencyresolver? – nemesv
Warum passen Sie WindsorApiControllerActivator an, während ich keine spezielle Behandlung sehe? –
Cuong le: weil ich Nhibernate Session-Objekt in den API-Controllern [Httppost] public IList Suche (SearchViewModel Modell) { IList searchResultViewModels = SearchVenues (Modell); return searchResultViewModels; // zurück "Hallo Welt"; } –
öffentlichen ISession NSession {get; einstellen; } public VendorController (ISession-Sitzung) { NSession = Sitzung; } // GET api/