2017-10-29 88 views
7

Robię Empty Web API in Visual Studio 2013 Framework 4.5. Oczywiście nie pojawiają się NinjectWebCommon.cs.Web API2 NinjectWebCommon.cs nie pojawiają się

zainstalowaniu poprzez Nuget,

  • Ninject,
  • Ninject.Web.Common,
  • Ninject.MVC5,
  • Ninject.Web.Common.WebHost,
  • Ninject. Web.WebApi,

  • Ninject.web.WebApi.WebHost

    ale NinjectWebCommon.cs nadal nie pojawia się.

Co jeszcze muszę zainstalować?

Czy mogę dodać ten plik ręcznie?

dzięki

Odpowiedz

15

Wygląda najnowszego Ninject.Web.Common.WebHost 3.3.0 pakietu Nuget nie obejmuje NinjectWebCommon.cs. Starsze wersje, takie jak 3.2.0, zawierają ten plik.

Ninject.Web.Common.WebHost 3.3.0 udostępnia klasę NinjectHttpApplication, z której można czerpać i używać zamiast NinjectWebCommon.cs. wiki documentation for Ninject nie wydaje się, aby zostały zaktualizowane, ale wygląda na to, używając NinjectHttpApplication jest jeden udokumentowany podejście, jak pokazano poniżej:

public class MvcApplication : NinjectHttpApplication 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new 
      { 
       controller = "Home", 
       action = "Index", 
       id = UrlParameter.Optional 
      }); 
    } 

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

    /// <summary> 
    /// Load your modules or register your services here! 
    /// </summary> 
    /// <param name="kernel">The kernel.</param> 
    private void RegisterServices(IKernel kernel) 
    { 
     // e.g. kernel.Load(Assembly.GetExecutingAssembly()); 
    } 

    protected override void OnApplicationStarted() 
    { 
     base.OnApplicationStarted(); 

     AreaRegistration.RegisterAllAreas(); 
     RegisterGlobalFilters(GlobalFilters.Filters); 
     RegisterRoutes(RouteTable.Routes); 
    } 
} 
+0

Nie mogłem dowiedzieć się, jak * rozwiązać * zależności. – Alisson

1

Testowane z najnowszymi Ninject: Utwórz pusty aplikacji WWW i zaznacz pola wyboru dla MVC i Web Api

Install Nuget Package: Ninject.Web.WebApi.WebHost

Install Nuget Package: WebActivatorEx

utworzyć klasę w App_Start nazwie NinjectWebCommon.cs

[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(NinjectWebCommon), "Start")] 
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(NinjectWebCommon), "Stop")] 

namespace <YOURNAMESPACE> 
{ 
    public static class NinjectWebCommon 
    { 
     private static readonly Bootstrapper bootstrapper = new Bootstrapper(); 

     public static void Start() 
     { 
      DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); 
      DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); 
      bootstrapper.Initialize(CreateKernel); 
     } 

     public static void Stop() 
     { 
      bootstrapper.ShutDown(); 
     } 

     private static IKernel CreateKernel() 
     { 
      var kernel = new StandardKernel(); 
      kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel); 
      kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); 

      RegisterServices(kernel); 
      return kernel; 
     } 
     private static void RegisterServices(IKernel kernel) 
     { 
      //kernel.Bind<IRepo>().ToMethod(ctx => new Repo("Ninject Rocks!")); 
     } 
    } 
} 

Konfiguracja DI w RegisterServices

Dodaj do uzależnienia MVC lub Web API Kontrolery parametrów konstruktora

nadzieję, że to pomaga, dzięki.

+3

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj [zasadnicze części odpowiedzi] (https://meta.stackexchange.com/a/8259) i podać link do odsyłacza. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni. [Odpowiedzi, które są niewiele więcej niż link można usunąć] (https://stackoverflow.com/help/deleted-answers) (Również, jeśli to twój github możesz chcieć [ujawnić swoją przynależność] (https: // stackoverflow .com/help/promotion) w twojej odpowiedzi) – adiga

+0

Podczas gdy ten link może odpowiedzieć na pytanie, lepiej umieścić tutaj istotne części odpowiedzi i podać link do odniesienia. Odpowiedzi dotyczące linków mogą stać się nieprawidłowe, jeśli strona z linkami się zmieni.- [Z recenzji] (/ opinia/niskiej jakości-posts/18113030) – waka