asp.net アプリケーションで DI に Ninject を使用しているため、グローバル クラスは NinjectHttpApplication から継承します。
私の CreateKernel() では、カスタム モジュールを作成しており、DI は正常に機能しています。
しかし、NinjectHttpApplication クラスに Logger プロパティがあることに気がついたので、例外がキャッチされないときはいつでも Application_Error でこれを使用しようとしています。
Ninject 用に nlog モジュールを正しく作成していると思いますが、ロガーは常に null です。これが私のCreateKernelです:
protected override Ninject.Core.IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new NLogModule(), new NinjectRepositoryModule());
return kernel;
}
ただし、次のメソッドでは、Logger は常に null です。
protected void Application_Error(object sender, EventArgs e)
{
Exception lastException = Server.GetLastError().GetBaseException();
Logger.Error(lastException, "An exception was caught in Global.asax");
}
明確にするために、Logger は ILogger タイプの NinjectHttpApplication のプロパティであり、[Inject] 属性を持ちます
Loggerに正しく注入する方法はありますか?