问题标签 [ninject.web.mvc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10930 浏览

c# - 将依赖注入 DelegatingHandler

我是依赖注入的新手,但NinjectNinject.Extensions.Logging[Inject]需要ILogger它的地方感到满意。

然而,一些DelegatingHandlers破坏了所有的乐趣。

谁能指出我如何在委托处理程序中将 Ninject.Extensions.Logger.Nlog2 注入 Ilogger 的正确方向?

更新

我认为皮特在评论中让我朝着正确的方向前进(谢谢!)。我将以下构造函数添加到HttpsHandler

现在我已经让 Logger 工作了!

我唯一的问题是,这是正确的做法,还是反模式?

0 投票
2 回答
25915 浏览

c# - 没有匹配的绑定可用,并且类型在 Ninject 中不可自绑定

我正在使用 Ninjec、Ninject.Web.MVC 和 Ninject.Web.Common

当我启动我的 mvc 应用程序时,我收到此绑定错误:

我的绑定有什么问题?

激活 DbConnection 时出错

没有匹配的绑定可用,并且该类型不可自绑定。

激活路径:

4) 将依赖DbConnection注入到DbContext类型构造函数的参数existingConnection中

3) 将依赖 DbContext 注入 GenericRepository{User} 类型的构造函数的参数 dbContext

2) 将依赖 IGenericRepository{User} 注入 HomeController 类型的构造函数的参数 repo

1) 请求 HomeController

建议:

1) 确保您已经为 DbConnection 定义了一个绑定。

2) 如果绑定是在模块中定义的,请确保该模块已加载到内核中。

3) 确保您没有意外创建多个内核。

4) 如果您使用构造函数参数,请确保参数名称与构造函数参数名称匹配。

5) 如果您使用自动模块加载,请确保搜索路径和过滤器正确。

0 投票
1 回答
488 浏览

c# - Ninject:也在库中使用配置

我从 Ninject 开始,我在 MVC 4 场景中使用它,并在“NinjectWebCommon”中配置了我的绑定。一切正常。

现在我想在一个库中以某种方式从 MVC 应用程序中获取具有配置的内核。

例如:在我的 MVC 项目中,我有一个带有属性的类“BaseController”

完美运行,这意味着在从 BaseController 继承的控制器中的每个操作中,属性“Ninject”都是很好的实例而不是 null!

现在我的外部库中有类“NinjectProxy”,具有完全相同的属性,但每次我创建一个新的“NinjectProxy”实例时,道具“Ninject”都是空的!

我的完整解决方案如下所示:

该库在“NinjectWebCommon”中加载:

如果这很重要。

有人知道我做错了什么吗?

0 投票
1 回答
585 浏览

asp.net-mvc - Ninject mvc InRequestScope

我将 NuGet 的 ninject 与 MVC 4 应用程序一起使用

我知道我可以使用 ninject 类作为 bas 类,但我没有。

在我的 global.asax.cs 我

在哪里

在我的 web.config 中,我加载了模块(并检查它是否加载良好)

我的控制器源自BaseController(IVIPRepository repo). 并且应用程序运行良好......但似乎永远不会释放存储库(以及相关的上下文)(VIPRepository 的 dispose 方法中的断点)

我还通过删除来清除 app_start,NinjectWebCommon.cs因为我认为我已经正确设置了 Ninject.... 似乎没有。

我做错什么了 ?

提前致谢

0 投票
1 回答
2349 浏览

c# - MVC3项目中标准ninject和ninject.web.mvc之间的区别?

我了解 Ninject 的一些功能,并且能够将其用于 IoC。

当我使用 NuGet 向 VS2010 中的项目添加对 Ninject 的引用时,我在列表中看到了其他 Ninject 扩展。特别是 Ninject.MVC3。同样在扩展名下的 Ninject 网站上 ( http://www.ninject.org/extensions.html ) 我看到了 Ninject.Web.Mvc。

如果我正在创建 MVC3 应用程序,我需要使用 Ninject 的这个扩展吗?我对带有类/接口的 IoC 的 Ninject 的基本使用是否需要标准库之外的任何东西?

MVC3 项目中的 Ninject 和 Ninject.MVC3/Ninject.Web.Mvc 有什么区别?

0 投票
2 回答
1368 浏览

c# - Ninject.Web.Mvc.FluentValidation 和 FluentValidation.MVC4

我尝试在我的 ASP.NET MVC4 项目中设置 Ninject.Web.Mvc.FluentValidation,如下所示:

但我收到以下错误:

我可以看到 Ninject.Web.Mvc.FluentValidation 的 NuGet 包是 3.0.0.0 版,错误告诉我它正在寻找 FluentValidation 的第 2 版以获取其依赖项。

如果我只为 Ninject.Web.Mvc.FluentValidation 安装 NuGet 包,那么它会安装 FluentValidation v2 依赖项而不是版本 3.4.6

但我也可以在这里看到:https ://github.com/ninject/ninject.web.mvc.fluentvalidation/commit/82096d0afd15c41d01c09fd47f4247682261768e 关于正在更新版本 3.4.6 的项目的说明

我目前正在使用 NuGet 将 FluentValidation.MVC4 包添加到我的项目中,然后在它之后添加 Ninject.Web.Mvc.FluentValidation (发现它的依赖项已经存在并且不添加它)。

我可以看到 NuGet 包最后一次发布是在 2013 年 4 月 1 日,但是当我查看项目中的 .nuspec 文件时,它显示

这个设置有什么我做错了吗?或者我可以通过包管理器控制台来更新依赖版本的方法?

0 投票
1 回答
7926 浏览

ninject - 我需要向 Ninject.Web.MVC 3.0 注册 Ninject.OnePerRequestModule 吗?

我在 MVC4 应用程序中使用 Ninject for DI 和 Ninject.MVC3 扩展,特别是版本 3.0.0.6。

阅读 Ninject wiki 上的文档,似乎使用创建的对象的生命周期InRequestScope实际上是由 ASP.NET 控制的,并且要正确清理一个应该注册OnePerRequestHttpModule。

type="Ninject.OnePerRequestModule"/>但是,由于找不到此文档,该文档似乎已过时。

另一方面,我最近阅读了一些似乎暗示NinjectHttpApplication已经处理OnePerRequest.

我的问题是 Ninject.Web.MVC 3.0 是否已经处理了这个问题,或者我是否仍然需要手动将 HttpModule 添加到我的“web.config”中。

我已将以下内容添加到我的配置中,并且一切似乎都在工作,尽管我完全不知道如何测试对象何时被销毁:

我需要手动添加OnePerRequestHttpModule 还是 Ninject.Web.MVC 会为我处理这个?

0 投票
2 回答
359 浏览

ninject - 命名绑定 - MVC3

我正在尝试使用命名实例注册到相同接口的实现

这个想法是,如果我没有指定名称,那么就会创建 CachedRepository,如果我需要一个面向 DB 的,那么我会使用 Named 属性,但是当创建一个简单的对象时,这种悲惨的失败

错误是

激活 IRepository 时出错 有多个匹配的绑定可用。激活路径:2)将依赖IRepository注入到TripManagerController类型的构造函数的参数库中1)对TripManagerController的请求

建议: 1) 确保您只为 IRepository 定义了一次绑定。

有没有办法在不为面向 BD 的存储库创建新接口的情况下实现我想要的?谢谢

0 投票
3 回答
247 浏览

.net - 如何在不通过每个对象的情况下将对象放入深度嵌套的方法中?

假设我有一个需要静态属性的方法,并且我想创建单元测试,所以我将它包装在一个包装类中。让我们调用接口 IFoo 和具体类 Foo。

现在,如果从 MVC 视图中调用我的方法,如何将包装器实例放入该方法中?

显然,我可以在我的控制器构造函数中添加一个 IFoo 参数,在我的视图模型中添加一个 IFoo 属性,在我的方法中添加一个 IFoo 参数,然后将它传递到链中;控制器、视图模型、视图、扩展方法。这似乎让我无法接受。

那么有没有更清洁的方法来做到这一点?

我认为 DI Container 是要走的路。老实说,到目前为止我还不需要一个,我天真地假设我只需添加 Ninject,将具体类型绑定到接口,然后在我的方法中进行以下调用。

我认为这将帮助我避免上面提到的整个构造函数参数/属性跟踪。现在我知道我仍然需要从某个地方获取内核变量,但我想我记得看到一些关于使用线程/会话/请求范围调用它的东西。我以为我可以实例化同一个内核实例,而不管它在哪里被调用,但是当我查看它时,我发现这仅适用于内核正在调用的对象实例......而不是内核本身。

那么,有没有办法让一个 Foo 的实例进入方法而不通过一堆除了传递它什么都不做的对象传递它?

0 投票
2 回答
247 浏览

ninject - Ninject 单例范围加载

我对 ASP.NET MVC 非常陌生,我需要帮助使用 Ninject 在单例范围内加载某些类型。

--- 现有代码看起来像 ----


我的工作是在单例范围内绑定这些类型,我不知道该怎么做。