Die*_*ego 14 c# asp.net ninject nuget asp.net-web-api
我正在做一个Empty Web API in Visual Studio 2013Framework 4.5.显然NinjectWebCommon.cs不会出现.
我通过Nuget安装,
Ninject.Web.WebApi,
Ninject.web.WebApi.WebHost
但NinjectWebCommon.cs仍然没有出现.
我还需要安装什么?
我可以手动添加该文件吗?
谢谢
Mat*_*ard 30
它看起来像最新的Ninject.Web.Common.WebHost 3.3.0 NuGet包不再包含NinjectWebCommon.cs.旧版本(例如3.2.0)确实包含此文件.
Ninject.Web.Common.WebHost 3.3.0提供了一个NinjectHttpApplication类,您可以使用它来代替NinjectWebCommon.cs.Ninject的wiki文档似乎没有更新,但看起来使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
使用最新的Ninject测试:创建一个空Web应用程序并选择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!"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
在RegisterServices中配置DI
向Mvc或Web Api控制器构造函数参数添加依赖项
希望它有所帮助,谢谢.
小智 5
如果要NinjectWebCommon在App_Start文件夹中获取自动生成的类,则应在NuGet软件包管理器中更改Dependency behavioroption的值。它将下载所有依赖项,包括NinjectWebCommon。
Highest
| 归档时间: |
|
| 查看次数: |
8681 次 |
| 最近记录: |