我在 ASP.NET Web 应用程序中设置了 Fluent NHibernate。我有一个 http 模块,它拦截请求并为每个请求创建一个新会话:
private static void BeginRequest( object sender, EventArgs e )
{
ISession session = _sessionFactory.OpenSession();
session.BeginTransaction();
CurrentSessionContext.Bind( session );
}
它是这样配置的:
private static ISessionFactory CreateSessionFactory()
{
return Fluently
.Configure()
.Database( MsSqlConfiguration.MsSql2005
.ConnectionString( c => c
.FromConnectionStringWithKey( "RecruitmentApp" ) ) )
.Mappings(
m => m.FluentMappings.AddFromAssemblyOf<RecruitmentAppLibrary.Applicant>()
)
.ExposeConfiguration( c => c.SetProperty(NHibernate.Cfg.Environment.CurrentSessionContextClass, "web"))
.BuildSessionFactory();
}
我确实将当前会话上下文类设置为“web”,但是当调用 _sessionFactory.GetCurrentSession() 时代码无法获取会话。它说“没有会话绑定到当前上下文”。我已经对其进行了一些调试,并且会话被插入到 Http 上下文中,但由于某种原因它无法将其拉回(即使调用我的 Page_Load 时它仍在上下文中)。有任何想法吗?