私は.Net MVC 3.0アプリケーションを持っており、Ninject 3.0を使用しています。私はナゲットを取り付けなかった。私はNinject.dll、Ninject.Web.Common.dll、Ninject.Web.Mvc.dll(および他2名)を参照しています。私はカスタムHttpModuleに依存関係を注入したいので、NinjectHttpApplicationでそれを動作させる方法を理解できません。NinjectHttpApplication(nugetなし)を使ってHttpModuleに依存関係を挿入する方法は?
私はこのエラーを持っている:のIntPtr
を活性化
エラーが一致するバインディングが用意されていない、とタイプが自己バインド可能ではありません。種類のコンストラクタのパラメータlazyKernelに依存性のFunc {のiKernel}のタイプのFunc {のiKernel}
2)注入のコンストラクタのパラメータ法に
3)依存性のIntPtrの注射HttpApplicationInitializationHttpModule
1)のIHttpModuleの要求:
活性化経路は
Global.asaxの
public class MvcApplication: NinjectHttpApplication
{
...
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
protected override IKernel CreateKernel()
{
var modules = new INinjectModule[]
{
new ServiceModule()
};
IKernel kernel = new StandardKernel(modules);
return kernel;
}
}
Web.C:ここ
コードです
kernel.Bind<Func<IKernel>>().ToMethod(c =>() => this.Kernel);
しかし、このに従って:
<httpModules>
<add name="NinjectHttpModule" type="Ninject.Web.Common.NinjectHttpModule"/>
</httpModules>
CustomHttpModule.cs
public class CustomHttpModule : IHttpModule
{
private ITesttService service;
public CustomHttpModule(ITesttService service)
{
this.service = service;
}
...
}
ServiceModule.cs
public class ServiceModule : NinjectModule
{
public override void Load()
{
...
Kernel.Bind<ITestService>().To<TestService>();
Kernel.Bind<IHttpModule>().To<CustomHttpModule>().InSingletonScope();
}
}
この結合は私の問題を解決しonfig githubで、私はそれをするはずはありません。
あなたは誰かが私が間違っているか不足していることを教えてもらえますか?
手作業で追加する必要があるファイルのサンプル/ドキュメントがありますか? – Ben
Nervermind、私は自分のプロジェクトのコピーでナゲットを試しました。私が必要としていたのは[Ninject wiki](https://github.com/ninject/ninject.web.mvc/wiki/)のこのページにあります。 MVC3アプリケーションの設定)。基本的には、新しいApp_StartフォルダにあるNinjectWebCommonクラスのコードをコピーするだけで済みます。それだけです! しかし、1つの質問:App_Startの方が良ければ、なぜGlobal.asaxのNinjectHttpApplicationから派生できますか? – Ben