2014-11-25 8 views
7

ist es möglich, mit Ninject Abhängigkeiten in die WebApiConfig-Klasse zu injizieren?Ninject-Abhängigkeiten in WebApiConfig in Web-API 2 injizieren

Dies ist meine WebApiConfig-Klasse.

 public static class WebApiConfig 
     { 
      public static void Register(HttpConfiguration config) 
      { 
       // Web API routes 
       config.MapHttpAttributeRoutes(); 

       config.Routes.MapHttpRoute(
        name: "DefaultApi", 
        routeTemplate: "api/{controller}/{id}", 
        defaults: new { id = RouteParameter.Optional } 
       ); 

       config.Services.Replace(typeof(IExceptionHandler), new ErrorHandlerMessageHandler(*NEEDS DEPENDENCY*)); 
      } 
     } 

Und das ist meine NinjectHttpApplication Erklärung

public class WebApiApplication : NinjectHttpApplication 
    { 
     protected override void OnApplicationStarted() 
     { 
      base.OnApplicationStarted(); 
      GlobalConfiguration.Configure(WebApiConfig.Register); 
     } 

     protected override IKernel CreateKernel() 
     { 
      var kernel = new StandardKernel(); 
      RegisterServices(kernel); 

      GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel); 
      return kernel; 
     } 

     private void RegisterServices(IKernel kernel) 
     { 
      //bindings 
     } 
    } 

Antwort

3

Am Ende habe ich nicht, dies zu tun haben, aber ich habe einen Blog-Post erstellt, wie dieser Beitrag dieses here

+0

dank tun hat mir geholfen, aber ich denke, einige Leute haben diese NinjectWebCommon-Klasse bereits, wenn sie WebAPI zu einem bestehenden MVC-Projekt hinzufügen. Ich fand, dass die folgende Zeile alles war, was ich hinzufügen musste: 'GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver (_kernel);' nach dem 'RegisterServices (_kernel)' Aufruf in der 'CreateKernel' Methode. Beachten Sie, dass dies der 'NinjectDependencyResolver' aus dem 'Ninject.Web.WebApi'-Namespace ist (eventuell muss ein separates NuGet-Paket heruntergeladen werden). Vielen Dank! – Jordan

+0

Ich versuche immer noch herauszufinden, wie das geht. Meine NinjectWebCommon-Klasse enthält diese Zeile bereits, aber selbst wenn ich eine Eigenschaft mit dem Attribut [Inject] eingerichtet habe, wird die Abhängigkeit nicht injiziert. Irgendwelche Gedanken? –

+0

Haben Sie Ihren Blog verschoben? Scheint, dass es nicht mehr verfügbar ist. –