.Net MVC 3.0アプリケーションがあり、Ninject3.0を使用しています。nugetをインストールしませんでした。Ninject.dll、Ninject.Web.Common.dll、Ninject.Web.Mvc.dll(およびその他2つ)を参照しています。カスタムHttpModuleに依存関係を挿入したいのですが、NinjectHttpApplicationで機能させる方法がわかりません。
このエラーがあります:
IntPtrのアクティブ化中にエラーが発生しまし
た一致するバインディングが利用できず、タイプは自己バインドできません。
アクティベーションパス:
3)タイプFunc {IKernel}のコンストラクターのパラメーターメソッドへの依存性IntPtrの
注入2)タイプHttpApplicationInitializationHttpModuleのコンストラクターのパラメーターlazyKernelへの依存性Func {IKernel}の注入
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.Config
<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();
}
}
このバインディングは私の問題を解決します:
kernel.Bind<Func<IKernel>>().ToMethod(c => () => this.Kernel);
しかし、githubのこの投稿によると、私はそれをすることになっていない。
誰かが私が間違っていることや行方不明になっていることを教えてもらえますか?