我目前正在尝试使用 Ninject 和 Ninject.Web 将依赖项注入到 ASP.NET WebForms 应用程序中的全局类 (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();
}
作业调度器
public class JobScheduler : IJobScheduler
{
public void RegisterOnStartup()
{
//Stuff goes in here ...
}
}
我已经在尝试使用属性注入,因为全局类无法使用构造函数注入。DI 在其他任何地方都可以工作,只是不在我的 Global.asax中,我需要在启动期间注册一些东西。
我找到了一些相关问题的答案,例如:如何解决 ASP.NET 中全局文件中的 Ninject 依赖项?但不幸的是,这对我不起作用。
我正在使用以下 Ninject NuGet 包:
<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" />
有任何想法吗?