我在一個新的ASP.NET項目上使用NHibernate,並運行到我認爲是奇怪的行爲。我試圖通過使用HttpModule來捕獲EndRequest事件並關閉會話來管理我的會話。然而,在EndRequest事件激發後,這很好,我在我的一個自定義控件的OnLoad事件中嘗試從我的對象中讀取一個屬性,該對象是延遲加載的異常。我收到一個例外,說明'未能懶惰地初始化集合,沒有會話或會話被關閉'。關閉這些屬性的延遲加載確實解決了問題,並且是可接受的解決方案。但這似乎違背了我一直認爲是真實的。使用EndRequest事件關閉NHibernate會話與IIS 7
我會假設OnLoad事件和所有服務器端處理將在EndRequest被觸發的時候完成。這也是我第一次在項目中使用IIS 7。這是行爲的原因嗎?預期的行爲是什麼?
您可能想查閱這篇文章以獲取更多關於在HTTP模塊中使用NHibernate的信息。 – 2008-12-01 16:31:27
http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx – 2008-12-01 16:36:08