我在我的 asp.net 应用程序中将 Ninject 用于 DI,因此我的 Global 类继承自 NinjectHttpApplication。
在我的 CreateKernel() 中,我正在创建我的自定义模块,并且 DI 对我来说工作得很好。
但是,我注意到 NinjectHttpApplication 类中有一个 Logger 属性,所以只要没有捕获到异常,我就会尝试在 Application_Error 中使用它。
我认为我正在为 Ninject 正确创建 nlog 模块,但我的记录器始终为空。这是我的 CreateKernel:
protected override Ninject.Core.IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new NLogModule(), new NinjectRepositoryModule());
return kernel;
}
但是在下面的方法中,Logger 始终为空。
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 吗?