私はEmpty Web API in Visual Studio 2013
フレームワーク4.5。明らかにNinjectWebCommon.cs
は表示されません。
Nuget経由でインストールしましたが、
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は、NinjectWebCommon.csから派生して使用できるNinjectHttpApplicationクラスを提供します。 Ninjectのwikiドキュメント は更新されていないようですが、以下に示すように、NinjectHttpApplicationの使用はドキュメント化されたアプローチの1つです。
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アプリケーションを作成し、MvcおよびWeb Apiのチェックボックスを選択します
Nugetパッケージのインストール:Ninject.Web.WebApi.WebHost
Nugetパッケージのインストール:WebActivatorEx
NinjectWebCommon.csという名前のApp_Startでクラスを作成します
[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 Controllersコンストラクターパラメーターに依存関係を追加する
お役に立てば幸いです。