How to integrate Ninject in a WebApi 2 And Mvc5 Project
Test Mvc in Index page
Test Web Api 2 calling the Get Method "IsServiceUp"
(Attribute Routing used, example url: http://www.foo.com/{eventual subfolder}/IsServiceUp)
-
Create an Empty Web Application and select the checkboxes for Mvc and Web Api
-
Install Nuget Package: Ninject.Web.WebApi.WebHost
-
Install Nuget Package: WebActivatorEx
-
Create a class in App_Start named 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!")); } } }
-
Configure your DI in RegisterServices
-
Add dependency to Mvc or Web Api Controllers constructor parameters