加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET网站中使用Ninject 3进行依赖注入

发布时间:2020-12-16 03:37:46 所属栏目:asp.Net 来源:网络整理
导读:我尝试了在 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 / Re
我尝试了在 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在网站上运行?

解决方法

我给你的第一个建议是……

不要使用ASP.NET网站.忘了他们存在.不惜一切代价避免它们.他们是过去几天的不合时宜的回归,由于遗留的原因,这些日子仍然存在.

我的第二条建议是……

如果您坚持继续使用网站项目,请大量投资于头痛药,因为您需要它.

我的第三条建议是……

见第一建议.

我的第四条建议是……

如果你完全无法控制它是否是一个网站项目,那么就放弃使用Ninject或任何其他DI容器的想法.网站项目继承自Web应用程序站点的不同基类集.你不会以同样的方式工作,你可能会花太多时间试图使它适合.

编辑:

基本上,代码模型在Web站点和Web应用程序之间的工作方式非常不同.您只需要看一下网站应用程序在Web应用程序应用程序中没有名称空间这一事实.这应该告诉你这些有多么不同.

我不完全确定激活过程在两者中都是一样的.

但是,说了这么多.你的代码有一个明显的问题.您的页面派生自System.Web.UI.Page而不是Ninject.Web.PageBase

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读