Web API2 NinjectWebCommon.cs no aparece

Estoy haciendo una Empty Web API in Visual Studio 2013 Framework 4.5. Obviamente, NinjectWebCommon.cs no aparece.

Lo instalé a través de Nuget,

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

  • Ninject.web.WebApi.WebHost

    pero NinjectWebCommon.cs todavía no aparece.

¿Qué más necesito para instalar?

¿Puedo agregar ese archivo manualmente?

Gracias

Parece que el paquete más reciente de Ninject.Web.Common.WebHost 3.3.0 de NuGet ya no incluye el NinjectWebCommon.cs. Las versiones anteriores, como 3.2.0 incluyen este archivo.

Ninject.Web.Common.WebHost 3.3.0 proporciona una clase NinjectHttpApplication que puede derivar y usar en lugar de NinjectWebCommon.cs. La documentación wiki para Ninject no parece haberse actualizado, pero parece que el uso de NinjectHttpApplication es un enfoque documentado, como se muestra a continuación:

 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; } ///  /// Load your modules or register your services here! ///  /// The kernel. private void RegisterServices(IKernel kernel) { // eg kernel.Load(Assembly.GetExecutingAssembly()); } protected override void OnApplicationStarted() { base.OnApplicationStarted(); AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } } 

Probado con el último Ninject: cree una aplicación web vacía y seleccione las casillas de verificación para Mvc y Web Api

Instala el paquete Nuget: Ninject.Web.WebApi.WebHost

Instalar el paquete Nuget: WebActivatorEx

Cree una clase en App_Start llamada NinjectWebCommon.cs

  [assembly: WebActivatorEx.PreApplicationStartMethod(typeof(NinjectWebCommon), "Start")] [assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(NinjectWebCommon), "Stop")] namespace  { 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>().ToMethod(ctx => () => new Bootstrapper().Kernel); kernel.Bind().To(); RegisterServices(kernel); return kernel; } private static void RegisterServices(IKernel kernel) { //kernel.Bind().ToMethod(ctx => new Repo("Ninject Rocks!")); } } } 

Configure su DI en RegisterServices

Agregue dependencia a los parámetros del constructor de Mvc o Web Api Controllers

Espero que ayude, gracias.

Si desea obtener la clase NinjectWebCommon generada NinjectWebCommon en la carpeta App_Start , debe cambiar el valor de Dependency behavior opción de Dependency behavior de Dependency behavior en el Highest en NuGet Package Manager . Descargará todas las dependencias, incluyendo NinjectWebCommon. introduzca la descripción de la imagen aquí