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

asp.net-mvc - 实现 IAuthorizationFilter 的过滤器的执行顺序

我创建了一个名为 PrincipalFilter 的过滤器,实现了 IAuthorizationFilter 接口,以设置自定义的 IPrincipal 和 IIdentity。这是一个全局过滤器。我通过 Ninject (3.0) 使用依赖注入,所以我在 NinjectModule 中注册我的过滤器:

这工作正常。至少我是这么想的。

有一个案例就是问题所在。重要的事实是,我的自定义 IIdentity 的属性 IsAuthenticated 在用户名已知时并不总是返回 true(可以识别用户但未通过身份验证)。防伪令牌出现问题。生成令牌和验证令牌时,当前身份不一样:在一种情况下,这是 mvc 框架的通用身份,在另一种情况下,这是我的自定义身份。2 个身份返回相同的名称,但在某些情况下不会返回相同的 IsAuthenticate 值。用户的名称包含在防伪令牌中;但如果一个身份未经过身份验证,则令牌不使用身份的名称,而是使用一个空字符串。因此令牌无效,因为它包含的名称不是当前身份的名称。

因此,当身份具有名称但未经过身份验证时,标记为 ValidateAntiForgeryTokenAttribute 的操作会出现问题。这是因为 ValidateAntiForgeryTokenAttribute 在我的自定义 PrincipalFilter 之前执行。

所以我的问题是如何确保我的自定义 IAuthorizationFilter 将在 ValidateAntiForgeryTokenAttribute 之前执行?我在注册过滤器时尝试使用 FilterScope 参数,但没有成功。

0 投票
1 回答
4093 浏览

asp.net-mvc-3 - 用于网站和 Api 的 Ninject - 序列不包含任何元素

我有一个带有 Web.Api 项目和 MVC 3 项目的 VS2010 解决方案。

Web.APi 和 MVC 项目都有自己的 App_Start,其中包含 NinjectWebCommon,并在其中声明了自己的绑定。

尝试使用 Api 时,我总是收到以下消息:

序列不包含任何元素

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:序列不包含任何元素

源错误:

第 30 行:DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); 第 31 行:DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); 第 32 行:bootstrapper.Initialize(CreateKernel); 第 33 行:} 第 34 行:

源文件:D:\Code\GreenDeal\PoS\GreenDeal.UI\App_Start\NinjectWebCommon.cs 行:32

堆栈跟踪:

[InvalidOperationException:序列不包含元素] System.Linq.Enumerable.Single(IEnumerable 1 source) +371 Ninject.Web.Mvc.NinjectMvcHttpApplicationPlugin.Start() in c:\Projects\Ninject\ninject.web.mvc\mvc3\src\Ninject.Web.Mvc\NinjectMvcHttpApplicationPlugin.cs:53 Ninject.Infrastructure.Language.ExtensionsForIEnumerableOfT.Map(IEnumerable1 series, Action 1 action) in c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:32 Ninject.Web.Common.Bootstrapper.Initialize(Func1 createKernelCallback) in c:\Projects\Ninject\Ninject.Web.Common\src\Ninject.Web.Common\Bootstrapper.cs: 53 XXXX.UI.App_Start.NinjectWebCommon.Start() 在 D:\Code\XXXX\PoS\XXXX.UI\App_Start\NinjectWebCommon.cs:32

如果我从 Api 或 MVC 站点中删除 WebActivator.PreApplicationStartMethod,我不会收到此错误。

我认为有两个 Start 有问题,但不知道该怎么办?我可以让它们共存吗?我应该分成 2 个解决方案并希望它消失吗?部署站点后,api 将驻留在不同的服务器上,站点将使用 api。

0 投票
1 回答
5644 浏览

c# - Ninject:将相同的接口绑定到两个实现

我有一个名为 的项目Infrastructure,其中包含一个接口IRepository

在我的解决方案中,我还有两个项目

  • 应用程序.Web
  • 应用程序.Web.Api
  • 基础设施

两个项目,都包含IRepository接口的实现

两种实现都适用于不同的DataContexts.

我如何在ninject中绑定它?

0 投票
1 回答
3134 浏览

entity-framework - 如何通过 Ninject 在 UnitOfWork 中获取 DbContext 实例?

我使用 UnitOfWork 模式和实体框架来使用下面的代码公开 DbContext。所以我的问题是,用 Ninject 获取 Context 实例是否可行?

工作单位

工作单位

现在在NinjectWebCommon

如果不使用_dbContext ?? Activator.CreateInstance<C>();,是否可以通过Ninject获取DbContext实例?

0 投票
1 回答
1003 浏览

c# - 使用 Ninject Dependency Creator 和 Event Broker 进行生命周期管理

我在一个相当大的项目中使用 Ninject,并希望利用Dependency Creation和 Event Broker 扩展。

依赖创建自述文件给出了以下示例(尽管我相信InCreatorScope可能已重命名为InDependencyCreatorScope现在)

这个例子通过容器创建了一个依赖关系,它们之间ParentDependency没有它们之间的“硬”引用。这促进了组件之间的松散耦合,并允许我使用 Event Broker 来发布事件Parent并订阅它Dependency,而无需显式连接事件处理程序。

我的问题是:如果Dependency注入其他对象并且我希望它具有RequestScope标准激活的生命周期怎么办?我如何声明我想使用 Request 范围进行标准激活,但在创建时使用依赖创建者范围Parent

0 投票
1 回答
170 浏览

ninject - Ninject DependencyCreation 和 EventBroker 扩展。确保一对一订阅

我正在使用 Ninject Event Broker 扩展,我有两个服务。ServiceOne是事件的发布者。ServiceTwo是订户。ServiceOne没有硬依赖ServiceTwo,我正在使用 DependencyCreation 扩展创建依赖。

以下是要求:

  • 我想在这两个对象之间定义一个一对一的事件。只有ServiceTwoDependencyCreation 创建的实例应该接收该事件。
  • 如果在对象图中还有其他ServiceTwo进一步向下的实例,则它们不应收到该事件。(这不应该是这种情况,但我想说明它)
  • ServiceTwo应在处置时ServiceOne处置。
  • 这是一个 Web 应用程序,它的生命周期ServiceOne应该只针对一个请求。

基本上我只是想重现我写作的行为:

一位出版商。一名订户。订阅者 2 没有收到该事件。

这是我的代码:

两个问题。

这能满足我的要求吗?有没有更好的办法?

0 投票
1 回答
487 浏览

c# - “按请求”激活上下文 ... 无请求

我有一个需要根据请求创建的存储库。现在有一个单例缓存对象需要使用该存储库来填充自己的数据,但是该对象在 Application_Start 事件中初始化,因此没有请求上下文。

使用 Ninject 实现这一目标的最佳方法是哪一种?

谢谢。

0 投票
1 回答
674 浏览

entity-framework - 如何使用 Ninject 和存储库模式实现 MVC4 Razor 的成员资格提供程序?

我无法理解如何使用 DI (Ninject) 和存储库模式使用 MVC4 实现成员资格提供程序?

任何机构请提供任何代码示例以了解如何实现它!!!

0 投票
1 回答
99 浏览

asp.net-mvc-4 - 如何手动正确构造依赖对象?

我正在使用 Ninject.Web.Common,到目前为止我真的很喜欢 Ninject。我还不习惯依赖注入,所以我有一个非常蹩脚的问题,但到目前为止我无法谷歌并回答。假设我有一个消息处理程序,它取决于我的 IUnitOfWork 实现。我需要构造我的处理程序的一个实例以将其添加到 Web API 配置中。我已经设法使用以下代码实现了这一点:

我真的不喜欢打字这种东西,所以我想知道我是否做得对。手动构造依赖对象的常用方法是什么?

0 投票
1 回答
118 浏览

c# - 是否可以避免在 DI 中手动创建对象?

据我了解,DI的实现基于

1.ISample接口

2.示例:ISampleInterface

3. ISampleInterface 与 Sample 的配置绑定。

4.和构造函数注入

其余的事情由 DI 处理。

但如果在某些情况下,在具体的接口实现类中,可能需要“新建”初始化。那我该怎么办?

Sample类中,

如果我需要申报

或在Sample类中。可能需要为接口方法实现编写下面的代码。

实际执行

所以我的问题是,当我们使用 DI 时手动创建对象是否正确?按照例子。或者他们有什么方法可以避免这种情况?