リクエストごとのセッションで Funq IoC コンテナを使用して ServiceStack で FluentNHibernate を使用しようとしていますが、サービスへの 2 番目のリクエストで ObjectDisposedException が発生するという問題が発生しています。Funq はリクエストごとに新しいセッションを作成するべきではありませんか?
私の理解では、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()));