dependency-injection - ActionFilterAttribute ninject 注入(inject) - DbContext 已被释放

标签 dependency-injection asp.net-mvc-4 ninject entity-framework-5 actionfilterattribute

我的项目使用带有服务和工作单元的常用存储库模式(全部使用 Ninject 从 NinjectModule 注入(inject)依赖项),但我正在尝试从 ActionFilterAttribute 访问服务在我显示的页面布局中注入(inject)一些信息(来自数据库),这样我就不需要弄乱每个 Controller 上的所有操作。

当我在一个屏幕上保存到数据库并移动到下一个屏幕然后返回到上一个屏幕时(使用标准 @Url.Action ),问题就来了: ActionFilterAttribute对于 Index操作被触发,但对服务和相应存储库(在属性内)的调用抛出异常,因为 DbContext has been disposed .

访问服务是否有任何问题,并因此出现 DbContext来自 ActionFilterAttribute在通过属性注入(inject)注入(inject)服务时?我想说明一下,我在属性中为服务使用属性注入(inject),因为构造函数接收 2 个参数,这些参数是任意的,具体取决于 Action 方法的签名,所以我唯一的选择是通过属性注入(inject)。

如果您需要一些代码,请告诉我,我会更新问题。

最佳答案

我在以下问题中找到了问题的解决方案: Injecting dependencies into ASP.NET MVC 3 action filters. What's wrong with this approach?

合并Mark Seemanstriplingwarrior 回答的评论是它的解决方案。

基本上,我将我的 ActionFilterAttribute 拆分为一个只装饰我的 Action 并保留我以后需要的参数的属性,以及一个检查 Action 的自定义属性的 ActionFilter,如果我的属性存在,那么它会注入(inject)我想要的数据数据库进入 ViewBag。所有内容稍后都与 Ninject 的 BindFilter 扩展绑定(bind),因此它仅适用于它需要的方法。

关于dependency-injection - ActionFilterAttribute ninject 注入(inject) - DbContext 已被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34329943/

相关文章:

c# - 在 ASP.NET MVC3 模型绑定(bind)器中使用依赖注入(inject)

.net - 如何在 MVC3 中使用 Ninject 将服务注入(inject) View / View 模型?

Angular 将不同的服务实现注入(inject)子模块

asp.net - Web应用程序中的Autofac,我应该将容器存储在哪里以便于访问?

java - Spring MVC 中如何使用 IoC 和 DI

asp.net-mvc - 将 jquery mobile mvc4 web 应用程序转换为 phonegap

c# - 在映射时向 Automapper 提供构造函数参数

jquery - 如何在 ASP.NET MVC 4 中自动将录制的音频文件保存到服务器上

asp.net-mvc-4 - Kendo ui - 如何将验证与 mvc 模型属性联系起来

asp.net-mvc-3 - 在 MVC3 的抽象基本 Controller 中使用 Ninject 进行无属性的属性注入(inject)