Schloss Windsor ApiController Factory-Implementierung für die ASP.NET-Web-API

8

Ich weiß, dass es möglich ist, DependancyResolver zu verwenden und Castle Windsor mit MVC zu registrieren, aber aufgrund der in Ссылка beschriebenen Probleme haben wir bei der WindsorControllerFactory-Methode der Implementierung in unseren MVC-Projekten.

Es sieht jedoch so aus, als ob die ApiControllers eine andere Art von Fabrik benutzen, da Castle Windsor die Abhängigkeiten nicht injizieren kann.

Hat jemand herausgefunden, wie man Castle Windsor mit ASP.NET Web API und MVC ohne den DependencyResolver verwendet?

    
Naz 04.03.2012, 19:03
quelle

6 Antworten

7

Dank Critians Beitrag und einigen Online-Suchanfragen habe ich es geschafft, den Code für jeden anderen zu erstellen, der dieses Problem hat. Ich habe es mit MVC3 und ASP.NET Web Api Beta arbeiten, aber ich denke, die gleiche Lösung sollte für MVC4 funktionieren.

Zuerst habe ich eine WindsorHttpControllerFactory erstellt, da die ApiControllers eine andere Fabrik verwenden als die MVCs.

%Vor%

Der heikle Teil der Registrierung war, dass es eine ganze Menge anderer Sachen zu registrieren schien. Das ist, womit ich endete.

%Vor%

Ich musste meine eigene Implementierung eines ILoggers erstellen. Sie könnten eine Stub-Version wie unten verwenden.

%Vor%     
Naz 15.03.2012, 14:17
quelle
2

Ich habe auch vor zwei Tagen mit diesem Problem zu tun gehabt und dieses Beitrag hat mir geholfen. Und vergessen Sie nicht, WebAPI-Controller in Ihrem Windsor Bootstrap hinzuzufügen.

%Vor%

UPDATE für ASP.NET MVC 4 RC: Dies nützliche Post sagt Ihnen, wie Sie Windsor mit WebAPI verwenden, es funktioniert wie ein Charme.

    
Tien Do 25.03.2012 16:32
quelle
1

Schau dir das post

Ich habe noch nicht zu mvc 4 beta gewechselt, inclusive web.api (ich benutze immer noch WCF web api Prev6), aber was im Thread aufgezeigt wurde, scheint der Weg zu sein

    
Crixo 05.03.2012 16:30
quelle
0

Ich habe einen Post darüber geschrieben, wie man das macht und es mit RavenDB verbindet, was Sie vielleicht nützlich finden könnten hier

    
Andy Williams 21.03.2012 12:24
quelle
0

Ich habe es geschafft, von meinem windsor-Container zu lösen, indem ich GlobalConfiguration.Configuration.ServiceResolver.SetResolver verwende, wie in hier .

Beispiel Windsor Code

%Vor%

NULL wird zurückgegeben, wenn die Typen nicht aufgelöst werden können und MVC die Abhängigkeiten neu aufbaut.

Bearbeiten: Stellen Sie sicher, dass Sie ein Installationsprogramm für IHttpController haben

    
lawrab 21.04.2012 00:12
quelle
0
%Vor%     
Arbejdsglæde 20.08.2015 12:28
quelle