问题标签 [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 投票
1 回答
63 浏览

c# - 如何使用不同的注入重新实例化 MVC3 控制器

这是我向 SO 提出的第一个问题,所以我会尽量不让自己丢脸。

我现在正在做的是将两个依赖对象注入到 MVC3 控制器的构造函数中。

但是为了应用程序逻辑,我需要在(运行时)未来的某个时候用新的对象更改这些对象。显然,最明显的情况是让 MVC 创建一个注入新对象的新控制器。很好,但是我如何让 MVC 产生新的控制器?

这是控制器(如果它是相关的,或者只是用于视觉识别):

PS我考虑了一些其他的解决方案,但我想让一些人肯定地告诉我这是不可能的。

那么可以吗?

我很高兴听到对我的问题的评论。Tnx,祝你好运。

0 投票
1 回答
424 浏览

.net - 使用 .NET 4 System.ServiceProcess.ServiceBase 将 Ninject v2 升级到 v3

我正在尝试使用 Ninject v3 测试托管在 .NET4 Windows 服务 ( System.ServiceProcess.ServiceBase) 中的 Web 服务。

我创建MyServerModule : NinjectModule,并在其中Load()根据app.config设置有条件地将我的接口绑定到运行时对象。

ServiceBase.OnStart()中,初始化步骤是:首先,StandardKernel基于实例创建一个新的MyServerModule,并将其与 Ninject 容器相关联。接下来,NinjectServiceHost基于我的服务类创建一个实例,并打开服务主机开始监听。

在 Ninject v2 中,代码为:

但是,在 Ninject v3 中,KernelContainer不再存在。此外,NinjectServiceHost()现在接受子类化的服务器工厂IServiceBehavior

如何在 Ninject v3 中执行类似的初始化步骤?

0 投票
1 回答
183 浏览

ninject - Ninject MVC3 - 如何解析类型

场景:我使用以下链接设置了 Ninject MVC3: https ://github.com/ninject/ninject.web.mvc/wiki/Setting-up-an-MVC3-application

我遵循 Nuget 版本。而且,代码如下所示:

有人可以帮助我了解以下代码何时何地被执行吗?

基本上我试图了解我们在哪里解决具体类型。

更新

我的问题更多的是 MVC 在哪里使用 Kernel.Get() 将给定的接口解析为具体类型。

这是由 Ninject.MVC 完成的吗?

0 投票
0 回答
611 浏览

dependency-injection - 通过 Ninject 在 MVC 4 中进行依赖注入有什么要求?

我尝试将依赖项注入到控制器的构造函数中,就像我之前所做的那样。问题是我似乎无法让它工作。使用 MVC 4 进行 DI 时是否有任何新要求,或者我是否缺少一些基本要求?

我正在使用:
Ninject.MVC3 3.0.0.6
System.Web.MVC 4.0.0.0

以下是与此相关的重要部分:


NinjectWebCommon.cs


全球.asax:


控制器:


我得到:

[MissingMethodException: 没有为此对象定义无参数构造函数。] System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache) +98 System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean skipCheckThis, Boolean fillCache) +241 System.Activator.CreateInstance(Type type, Boolean nonPublic) +69 System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext,类型控制器类型)+67

[InvalidOperationException:尝试创建类型为“Web.Controllers.EventController”的控制器时发生错误。确保控制器有一个无参数的公共构造函数。] System.Web.Mvc.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType) +182 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType) +80

在我看来,Ninject 没有得到 ControllerFactory 的责任。

0 投票
1 回答
413 浏览

c# - 是否在 InSingletonScope 中使用 Ninject 绑定 ObjectContext

我有带有构造函数的存储库,看起来像

我在我的 MVC 应用程序中使用 Ninject 来绑定 ObjectContext 像这样

我不确定InSingletonScope在这种情况下。我应该使用它还是不使用它?

0 投票
1 回答
777 浏览

asp.net-mvc-3 - 得到“找不到资源”。使用 Ninject 时出错

我正在开发一个 ASP.NET MVC 3.0 应用程序,使用 Ninject 作为我的依赖注入框架。

所以我从 NinjectHttpApplication 继承了我的控制器,如下所示:

但是每当我运行应用程序并尝试浏览到我的任何控制器时,我都会收到错误消息:

无法找到该资源。

说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Home/Index

这是什么原因造成的,我该如何解决?

0 投票
3 回答
303 浏览

asp.net-mvc - 使用 Ninject 向 MVC 控制器提供用户特定的依赖项

我有一些控制器需要 Web 服务连接(MS Dynamics CRM 的一个实例CrmService),我希望控制器通过它们的构造函数接收它。必须使用基于当前登录用户身份的令牌设置 CRM 服务(当用户登录应用程序对 CRM 进行身份验证并可以将返回的令牌存储在 Session 中时)。

我不确定如何最好地使用依赖注入和 Ninject 来提供这个实例。ToMethod()Ninject Func<> 访问 FormsAuth/Session 以获取当前请求(如果经过身份验证则获取令牌)以创建适当的实例似乎有点垃圾。我也不确定如果用户未通过身份验证会发生什么 - 我不需要这些用户能够访问控制器,但控制器将在[Authorize]运行任何过滤器之前实例化,因此必须始终满足依赖关系. 从我读过的内容来看,返回 null 并不理想,无论如何我都必须更改 Ninject 配置才能做到这一点。

我在想也许控制器可以获得一个实例ICrmServiceFactory或其他东西,但如果控制器最终具有其他也直接依赖的依赖项CrmService(并且不想被传递给工厂),这对我没有帮助。

任何有关如何解决此问题的建议将不胜感激。

0 投票
1 回答
208 浏览

asp.net-mvc - MVC DisplayNameAttribute 和 Ninject:可能吗?

让我们假设以下基本项目设置:

UI 代表 MVC Web 界面,核心实现了所有领域的业务对象,包括像CustomDisplayNameAttribute. 该属性包含额外的依赖项,如语言解析器,例如处理后备订单。休眠会话将是另一个可能的依赖项。

在早期的项目中,这些属性会进行全局请求以获取解析器。这是 IMO 丑陋的,应该以不同的方式处理。此外,Core 应该没有HttpContext: 因为每个请求都需要语言解析器,它可能最终出现在HttpContextItems Collection 中。

现在我是Ninject的初学者,我不确定它是否是正确的工具,以便将此类依赖项转化为类似CustomDisplayNameAttribute?

换句话说,它会是这样的:

  • HttpContext如果创建了属性,则使用Items Collection中的语言解析器填充其他语言解析器属性
  • 如果没有HttpContext(例如测试、石英作业等),请从其他地方获取。

感谢任何输入

编辑:示例代码

编辑2:在这种情况下,似乎没有办法绕过全局访问,比如注册表模式或类似的。UI 将在那里注册所需的数据,并且属性将从那里访问它。我们开始考虑将它存储在 中ThreadLocal<T>,但这似乎并没有真正保存,因为在生命周期中存在线程交换的可能性。所以似乎没有办法HttpContext在注册表层中存储。有关此主题的更多信息,请参阅 [Cup(Of T)][1]。

0 投票
1 回答
3930 浏览

asp.net-mvc-3 - 使用构造函数继承基本控制器

我正在使用 ninject 注入我的存储库。我想继承一个我的基类,但我不能,因为它有一个构造函数。

基本控制器:

具有继承的控制器: 错误“BaseController”不包含采用 0 个参数 HomeController.cs 的构造函数

0 投票
1 回答
1038 浏览

azure - 如何在 RegisterServices 方法中读取 Azure 网站应用程序设置

我正在尝试使用Windows Azure 预览门户上的 应用程序设置部分为我的 Azure Web 应用程序配置一些键/值对。在此处输入图像描述

根据文档,Azure 应该在运行时将配置的键/值对注入到 .Net 配置 AppSettings 中。

有谁知道,如何RegisterServices在类的方法中读取这些值NinjectWebCommon?我尝试了一种常见的方式

但它返回空值或空值。稍后在我的 Web 应用程序中读取应用程序设置工作正常。