ActionFilterAttribute ninject injection - 已经处理了DbContext

Ces*_*arD 8 dependency-injection ninject actionfilterattribute asp.net-mvc-4 entity-framework-5

我有我的项目使用通常的存储库模式与服务和工作单元(所有Ninject从NinjectModule注入依赖项),但我试图从一个服务访问服务,从ActionFilterAttribute布局中注入一些信息(从DB)我显示的页面,所以我不需要搞乱每个控制器上的所有操作.

问题是当我保存到DB一个屏幕上,并移动到下一个,然后再回到以前的(与标准@Url.Action):在ActionFilterAttributeIndex动作被触发,但在调用的服务和相应的库(该属性中)丢一个例外,因为DbContext has been disposed.

访问服务是否有任何问题,因此,DbContext从一段ActionFilterAttribute时间内通过Property Injection注入服务?我想要注意我在属性中使用属性注入服务,因为构造函数接收2个任意参数,具体取决于Action方法的签名,所以我唯一的选择是注入via属性.

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

Ces*_*arD 3

我在以下问题中找到了问题的解决方案: 将依赖项注入 ASP.NET MVC 3 操作过滤器。这种方法有什么问题吗?

将Mark Seeman的回答与striplingwarrior的评论结合起来就是解决方案。

基本上,我将 ActionFilterAttribute 拆分为一个属性,该属性仅装饰我的操作并保留稍后需要的参数,并且还拆分为一个 ActionFilter,该属性检查操作的自定义属性,如果我的属性存在,则它将我想要的数据从数据库注入到ViewBag。所有内容稍后都与 Ninject 的 BindFilter 扩展绑定,因此它仅适用于它需要的方法。