【发布时间】:2013-06-27 02:58:25
【问题描述】:
我是 ServiceStack 的新手,所以这可能是一个菜鸟问题:
我正在开发一个使用 ServiceStack 的 ASP.NET MVC4 应用程序,并试图弄清楚如何从我的 MVC4 使用的类(EF 上下文或 PetaPoco 数据库)中获取当前 IAuthSession从 ServiceStackController 派生的控制器。
有问题的类是在具有 ReuseScope.Request 范围的 Funq 中注册的(即基于每个 HTTP 请求),理想情况下,我希望它的每个实例都使用构造函数参数与当前 IAuthSession 自动装配或公共财产。
我该怎么做?
更新
经过一番挖掘,我想出了我认为可行的方法。
在我的AppHost.Configure 中,我注册了一个从当前请求返回会话的 lambda:
container.Register<IAuthSession>(c =>
HttpContext.Current.Request.ToRequest().GetSession());
还有:
container.RegisterAutoWired<EFCatalogDb>();
EFCatalogDb 是我的 EF 上下文,它采用 IAuthSession 作为构造函数参数:
public class EFCatalogDb : DbContext
{
public EFCatalogDb(IAuthSession session) : base()
{ }
// ...etc....
}
不幸的是,当我可以测试此解决方法时,我还没有处于开发阶段,因此必须询问其他人是否有意义。
【问题讨论】:
-
发现了一些听起来与我正在尝试做的事情非常相似但没有真正答案的东西:groups.google.com/forum/#!topic/servicestack/jnX8UwRWN8A