问题标签 [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.
asp.net-mvc - 实现 IAuthorizationFilter 的过滤器的执行顺序
我创建了一个名为 PrincipalFilter 的过滤器,实现了 IAuthorizationFilter 接口,以设置自定义的 IPrincipal 和 IIdentity。这是一个全局过滤器。我通过 Ninject (3.0) 使用依赖注入,所以我在 NinjectModule 中注册我的过滤器:
这工作正常。至少我是这么想的。
有一个案例就是问题所在。重要的事实是,我的自定义 IIdentity 的属性 IsAuthenticated 在用户名已知时并不总是返回 true(可以识别用户但未通过身份验证)。防伪令牌出现问题。生成令牌和验证令牌时,当前身份不一样:在一种情况下,这是 mvc 框架的通用身份,在另一种情况下,这是我的自定义身份。2 个身份返回相同的名称,但在某些情况下不会返回相同的 IsAuthenticate 值。用户的名称包含在防伪令牌中;但如果一个身份未经过身份验证,则令牌不使用身份的名称,而是使用一个空字符串。因此令牌无效,因为它包含的名称不是当前身份的名称。
因此,当身份具有名称但未经过身份验证时,标记为 ValidateAntiForgeryTokenAttribute 的操作会出现问题。这是因为 ValidateAntiForgeryTokenAttribute 在我的自定义 PrincipalFilter 之前执行。
所以我的问题是如何确保我的自定义 IAuthorizationFilter 将在 ValidateAntiForgeryTokenAttribute 之前执行?我在注册过滤器时尝试使用 FilterScope 参数,但没有成功。
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(IEnumerable
1 series, Action 1 action) in c:\Projects\Ninject\ninject\src\Ninject\Infrastructure\Language\ExtensionsForIEnumerableOfT.cs:32
Ninject.Web.Common.Bootstrapper.Initialize(Func
1 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。
c# - Ninject:将相同的接口绑定到两个实现
我有一个名为 的项目Infrastructure
,其中包含一个接口IRepository
在我的解决方案中,我还有两个项目
- 应用程序.Web
- 应用程序.Web.Api
- 基础设施
两个项目,都包含IRepository
接口的实现
两种实现都适用于不同的DataContexts
.
我如何在ninject中绑定它?
entity-framework - 如何通过 Ninject 在 UnitOfWork 中获取 DbContext 实例?
我使用 UnitOfWork 模式和实体框架来使用下面的代码公开 DbContext。所以我的问题是,用 Ninject 获取 Context 实例是否可行?
工作单位
工作单位
现在在NinjectWebCommon
如果不使用_dbContext ?? Activator.CreateInstance<C>();
,是否可以通过Ninject获取DbContext实例?
c# - 使用 Ninject Dependency Creator 和 Event Broker 进行生命周期管理
我在一个相当大的项目中使用 Ninject,并希望利用Dependency Creation和 Event Broker 扩展。
依赖创建自述文件给出了以下示例(尽管我相信InCreatorScope
可能已重命名为InDependencyCreatorScope
现在)
这个例子通过容器创建了一个依赖关系,它们之间Parent
和Dependency
没有它们之间的“硬”引用。这促进了组件之间的松散耦合,并允许我使用 Event Broker 来发布事件Parent
并订阅它Dependency
,而无需显式连接事件处理程序。
我的问题是:如果Dependency
注入其他对象并且我希望它具有RequestScope
标准激活的生命周期怎么办?我如何声明我想使用 Request 范围进行标准激活,但在创建时使用依赖创建者范围Parent
?
ninject - Ninject DependencyCreation 和 EventBroker 扩展。确保一对一订阅
我正在使用 Ninject Event Broker 扩展,我有两个服务。ServiceOne
是事件的发布者。ServiceTwo
是订户。ServiceOne
没有硬依赖ServiceTwo
,我正在使用 DependencyCreation 扩展创建依赖。
以下是要求:
- 我想在这两个对象之间定义一个一对一的事件。只有
ServiceTwo
DependencyCreation 创建的实例应该接收该事件。 - 如果在对象图中还有其他
ServiceTwo
进一步向下的实例,则它们不应收到该事件。(这不应该是这种情况,但我想说明它) ServiceTwo
应在处置时ServiceOne
处置。- 这是一个 Web 应用程序,它的生命周期
ServiceOne
应该只针对一个请求。
基本上我只是想重现我写作的行为:
一位出版商。一名订户。订阅者 2 没有收到该事件。
这是我的代码:
两个问题。
这能满足我的要求吗?有没有更好的办法?
c# - “按请求”激活上下文 ... 无请求
我有一个需要根据请求创建的存储库。现在有一个单例缓存对象需要使用该存储库来填充自己的数据,但是该对象在 Application_Start 事件中初始化,因此没有请求上下文。
使用 Ninject 实现这一目标的最佳方法是哪一种?
谢谢。
entity-framework - 如何使用 Ninject 和存储库模式实现 MVC4 Razor 的成员资格提供程序?
我无法理解如何使用 DI (Ninject) 和存储库模式使用 MVC4 实现成员资格提供程序?
任何机构请提供任何代码示例以了解如何实现它!!!
asp.net-mvc-4 - 如何手动正确构造依赖对象?
我正在使用 Ninject.Web.Common,到目前为止我真的很喜欢 Ninject。我还不习惯依赖注入,所以我有一个非常蹩脚的问题,但到目前为止我无法谷歌并回答。假设我有一个消息处理程序,它取决于我的 IUnitOfWork 实现。我需要构造我的处理程序的一个实例以将其添加到 Web API 配置中。我已经设法使用以下代码实现了这一点:
我真的不喜欢打字这种东西,所以我想知道我是否做得对。手动构造依赖对象的常用方法是什么?
c# - 是否可以避免在 DI 中手动创建对象?
据我了解,DI的实现基于
1.ISample接口
2.示例:ISampleInterface
3. ISampleInterface 与 Sample 的配置绑定。
4.和构造函数注入
其余的事情由 DI 处理。
但如果在某些情况下,在具体的接口实现类中,可能需要“新建”初始化。那我该怎么办?
在Sample类中,
如果我需要申报
或在Sample类中。可能需要为接口方法实现编写下面的代码。
实际执行
所以我的问题是,当我们使用 DI 时手动创建对象是否正确?按照例子。或者他们有什么方法可以避免这种情况?