Dependency injection ActionFilterAttribute ninject注入-DbContext已被释放

Dependency injection ActionFilterAttribute ninject注入-DbContext已被释放,dependency-injection,asp.net-mvc-4,ninject,entity-framework-5,actionfilterattribute,Dependency Injection,Asp.net Mvc 4,Ninject,Entity Framework 5,Actionfilterattribute,我有一个项目,它使用服务和工作单元的常规存储库模式(所有这些都是通过Ninject从Ninject模块注入依赖项),但我试图从ActionFilterAttribute访问服务以注入一些信息(从DB)在我显示的页面布局中,这样我就不需要处理每个控制器上的所有操作 当我在一个屏幕上保存到DB并移动到下一个屏幕,然后返回到上一个屏幕(使用标准的@Url.Action):会触发索引操作的ActionFilterAttribute,但会调用服务和相应的存储库(在属性内)抛出异常,因为已释放了DbCont

我有一个项目,它使用服务和工作单元的常规存储库模式(所有这些都是通过Ninject从Ninject模块注入依赖项),但我试图从
ActionFilterAttribute
访问服务以注入一些信息(从DB)在我显示的页面布局中,这样我就不需要处理每个控制器上的所有操作

当我在一个屏幕上保存到DB并移动到下一个屏幕,然后返回到上一个屏幕(使用标准的
@Url.Action
):会触发
索引
操作的
ActionFilterAttribute
,但会调用服务和相应的存储库(在属性内)抛出异常,因为已释放了
DbContext

当通过属性注入来注入服务时,从
actionfilteratAttribute
访问服务以及因此访问
DbContext
是否存在任何问题?我要注意的是,我在属性中为服务使用属性注入,因为构造函数接收2个参数,这些参数是任意的,具体取决于操作方法的签名,所以我唯一的选择是通过属性注入


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

我在以下问题中找到了问题的解决方案:

将客户的回答与客户的评论相结合是解决问题的方法


基本上,我将ActionFilterAttribute拆分为一个属性,该属性仅修饰我的动作并保留我以后需要的参数,还拆分为一个ActionFilter,该属性检查动作的自定义属性,如果我的属性存在,则它会将我想要的DB数据注入ViewBag。所有内容稍后都使用Ninject的BindFilter扩展绑定,因此它只应用于它所需的方法。

DB上下文及其注入的所有位置都需要在RequestScope(或更短的范围)中绑定