, Он загрузит все зависимости, включая NinjectWebCommon.

аюEmpty Web API in Visual Studio 2013 Рамки 4.5. очевидноNinjectWebCommon.cs не появляются

Я установил через Nuget,

Ninject,Ninject.Web.Common,Ninject.MVC5,Ninject.Web.Common.WebHost,

Ninject.Web.WebApi,

Ninject.web.WebApi.WebHost

ноNinjectWebCommon.cs все еще не появляется.

Что еще мне нужно установить?

Могу ли я добавить этот файл вручную?

Спасибо

Ответы на вопрос(3)

Решение Вопроса

что самый последний пакет Ninject.Web.Common.WebHost 3.3.0 NuGet больше не включает в себя NinjectWebCommon.cs. Более старые версии, такие как 3.2.0, включают этот файл.

Ninject.Web.Common.WebHost 3.3.0 предоставляет класс NinjectHttpApplication, который вы можете использовать и использовать вместо NinjectWebCommon.cs.вики-документация для Ninject похоже, что он не был обновлен, но похоже, что использование NinjectHttpApplication - это один документированный подход, как показано ниже:

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);
   }
}
 Alisson27 дек. 2017 г., 04:43
Я не мог понять, какразрешить зависимость.
 Talon07 авг. 2018 г., 10:36
@ Alisson вы можете просто добавить свою зависимость в функцию RegisterServices. то есть kernel.Bind <IMyClass> (). To <MyClass> ();

создайте пустое веб-приложение и установите флажки для Mvc и Web Api

Установить пакет Nuget: Ninject.Web.WebApi.WebHost

Установить пакет Nuget: WebActivatorEx

Создайте класс в App_Start с именем 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!"));
         }
     }
 }

Настройте свой DI в RegisterServices

Добавить зависимость к параметрам конструктора Mvc или Web Api Controllers

Надеюсь, это поможет, спасибо.

 Cory06 апр. 2018 г., 01:23
Это сработало как обаяние для меня. Мне все еще неясно, почему они отказались от включения этого автоматически. Выше я видел способ наследования NinjectHttpApplication в MVC, но из того, что я вижу, WebApi ведет себя немного по-другому. Я буду расследовать позже, когда у меня будет время. Еще раз спасибо.

NinjectWebCommon класс вApp_Start папку, вы должны изменить значениеDependency behavior вариант наHighest вNuGet Package Manager, Он загрузит все зависимости, включая NinjectWebCommon.

Ваш ответ на вопрос