Der ASP.Net MVC 4 Web API-Controller funktioniert nicht mit Unity.WebApi

9

Mein ASP.Net MVC 4 Web API-Controller funktioniert nicht mit Unity.WebApi. Im selben Projekt arbeiten einfache Controller ordnungsgemäß mit Unity.Mvc3. Aber wenn ich Web-API-Controller von ApiController abgeleitet ausführen, bekomme ich eine Nachricht:

  

{"$ id": "1", "Nachricht": "Ein Fehler ist aufgetreten.", "ExceptionMessage": "Type   'ElectricTests.Controllers.Api.DocumentsController' hat keine a   Standard   Konstruktor "," ExceptionType ":" System.ArgumentException "," StackTrace ":"   bei System.Linq.Expressions.Expression.New (Typ) \ r \ n at   System.Web.Http.Internal.TypeActivator.Create [TBase] (Typ   instanceType) \ r \ n bei   System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator (HttpRequestMessage   Anfrage, Typ controllerType, Func'1 & amp; Aktivator) \ r \ n bei   System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create (HttpRequestMessage   Anfrage, HttpControllerDescriptor ControllerDescriptor, Typ   controllerType) "}

Mein ApiController:

%Vor%

Bootstrapper.cs:

%Vor%

Wo ist mein Fehler?

    
Oblomingo 21.04.2013, 10:04
quelle

2 Antworten

25

Die Handhabung von Controller und ApiController ist anders, da sie völlig unterschiedliche Basisklassen haben:

Ich verwende die Unit Unity.MVC4 für den Controller DI ( Ссылка )

%Vor%

und Unity.WebAPI für DI ( Ссылка )

%Vor%

Ihr Bootstrapper sollte eine Kombination aus beiden sein:

%Vor%

Hinweis: Ich musste auch eine Registrierung hinzufügen, damit die Hilfeseite funktioniert

%Vor%

Als Inhaber von Unity.MVC4 möchte ich WebApi in unserer Bibliothek implementieren.

    
Oliver 06.09.2013, 12:55
quelle
0

Wenn Sie Unity für die ASP.NET-Web-API installieren, wird alles außer dem Hinzufügen der folgenden Zeile zu Ihrem Global.asax

ausgeführt %Vor%

Sie müssen das also zu Ihrer Application_Start-Methode hinzufügen:

%Vor%     
Fenton 07.06.2013 15:45
quelle

Tags und Links