使用Ninject to Property将依赖项注入Global.asax的Application_Start方法
本文关键字:asax Application 方法 Start Global 注入 to Ninject Property 依赖 使用 | 更新日期: 2023-09-27 17:58:59
我目前正在尝试使用Ninject和Ninject.Web将依赖项注入ASP.NET WebForms应用程序中的Global类(Global.asax)。一旦我试图从注入的类中调用任何函数(例如Application_Start中),我就会出现NullReferenceException。
全球.asax:
public class Global : System.Web.HttpApplication
{
[Inject]
public IJobScheduler JobScheduler { private get; set; }
protected void Application_Start(object sender, EventArgs e)
{
JobScheduler.RegisterOnStartup();
}
}
NinjectWebCommon.cs
public static class NinjectWebCommon
{
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IJobScheduler>().To<JobScheduler>();
}
}
IJobScheduler
public interface IJobScheduler
{
void RegisterOnStartup();
}
JobScheduler
public class JobScheduler : IJobScheduler
{
public void RegisterOnStartup()
{
//Stuff goes in here ...
}
}
我已经在尝试使用属性注入,因为构造函数注入不可能用于全局类DI在其他任何地方都在工作,只是不在我的Global.asax中,我需要在启动期间注册一些东西。
我找到了一些相关问题的答案,比如:如何在ASP.NET中解决全局文件中的Ninject依赖项?但不幸的是,这对我不起作用。
我正在使用以下NinjectNuGet包:
<package id="Ninject" version="3.2.2.0" targetFramework="net40" />
<package id="Ninject.Web" version="3.2.1.0" targetFramework="net40" />
<package id="Ninject.Web.Common" version="3.2.0.0" targetFramework="net40" />
<package id="Ninject.Web.Common.WebHost" version="3.2.0.0" targetFramework="net40" />
有什么想法吗?
我相信Application_Start方法是在注入属性之前调用的。
查看此处了解更多信息https://github.com/ninject/ninject.extensions.logging/issues/14