AFD*_*AFD 5 asp.net dependency-injection ninject
我尝试了如何在asp.net Web窗体上实现Ninject或DI中找到的以下解决方案?(杰森的回答)
在ASP.NET Web应用程序中运行良好.
问题是我想在ASP.NET 网站中使用Ninject for DI ,而不是Web应用程序.
我在NinjectWebCommon/RegisterServices中注册了自定义绑定:
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<ITestRepository>().To<TestRepository>();
}
Run Code Online (Sandbox Code Playgroud)
在网页中我注入它:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
它始终抛出一个空引用异常,并且永远不会到达NinjectWebCommon.cs中的断点 - 与Web应用程序不同.
还有什么办法让Ninject 3在网站上运行?
Eri*_*sch 10
我给你的第一个建议是......
不要使用ASP.NET网站.忘了他们存在.不惜一切代价避免它们.他们是过去几天的不合时宜的回归,由于遗留的原因,这些日子仍然存在.
我的第二条建议是......
如果您坚持继续使用网站项目,请大量投资于头痛药,因为您需要它.
我的第三条建议是......
见第一建议.
我的第四条建议是......
如果你完全无法控制它是否是一个网站项目,那么就放弃使用Ninject或任何其他DI容器的想法.网站项目继承自Web应用程序站点的不同基类集.你不会以同样的方式工作,你可能会花太多时间试图使它适合.
编辑:
基本上,代码模型在Web站点和Web应用程序之间的工作方式非常不同.您只需要看一下网站应用程序在Web应用程序应用程序中没有名称空间这一事实.这应该告诉你这些有多么不同.
我不完全确定激活过程在两者中都是一样的.
但是,说了这么多.你的代码有一个明显的问题.您的页面派生自System.Web.UI.Page而不是Ninject.Web.PageBase
| 归档时间: |
|
| 查看次数: |
2528 次 |
| 最近记录: |