Web API2 NinjectWebCommon.cs 没有出现
Web API2 NinjectWebCommon.cs do not appear
我正在做 Empty Web API in Visual Studio 2013
Framework 4.5。显然NinjectWebCommon.cs
没有出现
我是通过 Nuget 安装的,
Ninject,
Ninject.Web.Common,
Ninject.MVC5,
Ninject.Web.Common.WebHost,
Ninject.Web.WebApi,
Ninject.web.WebApi.WebHost
但是NinjectWebCommon.cs
还是没有出现
我还需要安装什么?
我可以手动添加该文件吗?
谢谢
最新的 Ninject.Web.Common.WebHost 3.3.0 NuGet 包似乎不再包含 NinjectWebCommon.cs。旧版本,例如 3.2.0 确实包含此文件。
Ninject.Web.Common.WebHost 3.3.0 提供了一个 NinjectHttpApplication class,您可以从中派生并使用它来代替 NinjectWebCommon.cs。 wiki documentation for 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);
}
}
使用最新 Ninject 测试:
创建一个空的 Web 应用程序和 select Mvc 和 Web 的复选框 Api
安装 Nuget 包:Ninject.Web.WebApi.WebHost
安装 Nuget 包:WebActivatorEx
在 App_Start 中创建一个名为 NinjectWebCommon.cs
的 class
[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!"));
}
}
}
在 RegisterServices 中配置您的 DI
添加对 Mvc 或 Web 的依赖Api控制器构造函数参数
希望对你有帮助,谢谢。
如果您想要在 App_Start 文件夹中自动生成 NinjectWebCommon
class,您应该更改 Dependency behavior
的值NuGet 包管理器 中 Highest
的选项。
它将下载所有依赖项,包括 NinjectWebCommon。
我正在做 Empty Web API in Visual Studio 2013
Framework 4.5。显然NinjectWebCommon.cs
没有出现
我是通过 Nuget 安装的,
Ninject,
Ninject.Web.Common,
Ninject.MVC5,
Ninject.Web.Common.WebHost,
Ninject.Web.WebApi,
Ninject.web.WebApi.WebHost
但是
NinjectWebCommon.cs
还是没有出现
我还需要安装什么?
我可以手动添加该文件吗?
谢谢
最新的 Ninject.Web.Common.WebHost 3.3.0 NuGet 包似乎不再包含 NinjectWebCommon.cs。旧版本,例如 3.2.0 确实包含此文件。
Ninject.Web.Common.WebHost 3.3.0 提供了一个 NinjectHttpApplication class,您可以从中派生并使用它来代替 NinjectWebCommon.cs。 wiki documentation for 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);
}
}
使用最新 Ninject 测试: 创建一个空的 Web 应用程序和 select Mvc 和 Web 的复选框 Api
安装 Nuget 包:Ninject.Web.WebApi.WebHost
安装 Nuget 包:WebActivatorEx
在 App_Start 中创建一个名为 NinjectWebCommon.cs
的 class [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!"));
}
}
}
在 RegisterServices 中配置您的 DI
添加对 Mvc 或 Web 的依赖Api控制器构造函数参数
希望对你有帮助,谢谢。
如果您想要在 App_Start 文件夹中自动生成 NinjectWebCommon
class,您应该更改 Dependency behavior
的值NuGet 包管理器 中 Highest
的选项。
它将下载所有依赖项,包括 NinjectWebCommon。