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()));