Autofac und ASP.NET Web-API-ApiController
Ich habe mit autofac mit MVC 3 für eine Weile und Liebe es. Ich habe vor kurzem aktualisiert ein Projekt zu MVC 4 und alles scheint zu funktionieren, außer für Web-Api-ApiControllers. Ich erhalte die folgende Ausnahme.
An error occurred when trying to create a controller of type 'MyNamespace.Foo.CustomApiController'. Make sure that the controller has a parameterless public constructor.
Mir scheint das ein Problem zu sein mit DI über autofac. Übersehe ich etwas oder gibt es etwas in den Werken. Ich weiß, MVC4 kam gerade heraus und ist eine beta Version, so dass ich nicht viel erwartet, aber dachte, ich könnte etwas fehlen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich veröffentlicht Autofac-integration-Pakete auf NuGet für die Beta-Versionen von MVC 4 und der Web-API. Die Integration wird eine Autofac-Lebensdauer-scope pro Anfrage controller (MVC controller oder API-controller abhängig von der integration). Dies bedeutet, dass der controller und dessen Abhängigkeiten werden automatisch beseitigt, am Ende jedes Anrufs. Beide Pakete installiert werden können, side-by-side in der gleichen Projekt.
MVC 4
https://nuget.org/packages/Autofac.Mvc4
http://alexmg.com/post/2012/03/09/Autofac-ASPNET-MVC-4-(Beta)-Integration.aspx
Web-API
https://nuget.org/packages/Autofac.WebApi/
http://alexmg.com/post/2012/03/09/Autofac-ASPNET-Web-API-(Beta)-Integration.aspx
Links sind jetzt korrigiert.
Ich nur in dieser Konfiguration auf einer meiner apps. Es gibt verschiedene Möglichkeiten, es zu tun, aber ich mag diesen Ansatz:
Autofac und ASP.NET Web-API-System.Web.Http.Services.IDependencyResolver-Integration
Zuerst erstellte ich eine Klasse welche das implementiert
System.Web.Http.Services.IDependencyResolver
- Schnittstelle.Und ich habe eine weitere Klasse, die hält meine Registrierungen:
Dann initialisieren Sie es auf
Application_Start
:Ich hoffe, das hilft.