2012-10-02 2 views
1

Fluent NHibernate를 ASP.NET 웹 응용 프로그램에 설정했습니다.Fluent NHibernate 세션이 ASP.NET 웹 응용 프로그램에서 작동하지 않습니다.

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

나는 현재 세션 컨텍스트 클래스에 "웹"을 설정하는 내가 요청을 차단하고 각각에 대해 새로운 세션을 생성하는 HTTP 모듈이 그러나 _sessionFactory.GetCurrentSession()이 호출 될 때 코드는 세션을 가져올 수 없습니다. "현재 컨텍스트에 바인드 된 세션 없음"이라고 표시됩니다. 내가 조금 그것을 디버깅하고 세션이 HTTP 컨텍스트에 삽입되고 있지만 그것은 (비록 내 Page_Load 호출 될 때 여전히 컨텍스트에서 경우에도) 그것을 다시 뽑을 수 없습니다. 어떤 아이디어?

+0

언제 세션 컨텍스트를 바인드 해제? 당신이 그것을하고있는 곳에서 중단 점을 놓고 그것을 사용하려고 시도하기 전에 그것을 묶어 놓지 않았는지 확인하십시오. –

답변

0

대신의 CurrentSessionContext의 ManagedWebSessionContext를 사용해보십시오 :

ManagedWebSessionContext.Bind(HttpContext.Current, session); 
관련 문제