我尝试了如何在 asp.net Web 窗体上实现 Ninject 或 DI中找到的以下解决方案?(杰森的回答)
- 创建一个新的 ASP.NET WebForms 项目
- 使用 NuGet 添加 Ninject.Web 库(这也会关闭 Ninject.Web.Common 和 Ninject 库)
- 在 App_Start / NinjectWebCommon.cs / RegisterServices 方法中注册您的自定义绑定
- 在您的页面上使用属性注入
在 ASP.NET Web 应用程序中运行良好。
问题是我想在 ASP.NET网站而不是 Web 应用程序中使用 Ninject 进行 DI。
我在 NinjectWebCommon / RegisterServices 中注册了自定义绑定:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestRepository>().To<TestRepository>();
}
在网页中我注入它:
public partial class _Default : System.Web.UI.Page
{
[Inject]
public ITestRepository _repository { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
System.Diagnostics.Trace.WriteLine(_repository.ExecuteOperation());
}
}
它总是抛出一个空引用异常,并且永远不会到达 NinjectWebCommon.cs 中的断点——这与 Web 应用程序不同。
为了让 Ninject 3 在网站上运行,还应该做些什么?