【发布时间】:2012-05-03 14:26:08
【问题描述】:
我尝试了在How can I implement Ninject or DI on asp.net Web Forms?(Jason 的回答)中找到的以下解决方案
- 创建一个新的 ASP.NET WebForms 项目
- 使用 NuGet 添加 Ninject.Web 库(这也会关闭 Ninject.Web.Common 和 Ninject 库)
- 在 App_Start / NinjectWebCommon.cs / RegisterServices 方法中注册您的自定义绑定
- 在您的页面上使用属性注入
在 ASP.NET Web 应用程序中表现出色。
问题是我想在 ASP.NET 网站中使用 Ninject for DI,而不是 Web 应用程序。
我在 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 在网站上运行?
【问题讨论】:
-
注意断点被命中是因为调试器连接得太晚了。如果你在
kernel.Bind<...>...之前写Debugger.Break(),它将到达那一行。
标签: asp.net dependency-injection ninject