2
我想在ServiceStack在会话每个请求使用FluentNHibernate与Funq IoC容器,我在第二个请求,我的服务,而运行到一个问题,我得到的ObjectDisposedException。不应该Funq为每个请求创建一个新的会话?ServiceStack随着Funq和FuentNHibernate Sesssion每个请求
我的理解是,通过在Funq中使用ReusedWithin(ReuseScope.Request),每个请求都会得到一个新的ISession,但这只发生在第一个请求上。在我APPHOST我有以下几点:
public static NH.ISession CurrentSession
{
get
{
SessionFactory = GetFactory();
NH.ISession session = SessionFactory.OpenSession();
return session;
}
}
private static NH.ISessionFactory GetFactory()
{
return Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
.ConnectionString(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)).Mappings(m =>
{ m.FluentMappings.AddFromAssemblyOf<Case>(); })
.BuildSessionFactory();
}
而且与容器的注册:
container.Register<NH.ISession>(c => CurrentSession).ReusedWithin(Funq.ReuseScope.Request);
container.Register<ILog>(c => LogManager.GetLogger(GetType()));