2012-07-23 80 views
0

我有一個在ASP.NET中實現的Web服務。NHibernate和夏普體系結構 - 數據庫連接更改後不刷新NHiberate.config

我實例在Global.asax事件處理我的NHibernate的會議如下:

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     NHibernateInitializer.Instance().InitializeNHibernateOnce(
     () => InitializeNHibernateSession()); 
    } 

    private void InitializeNHibernateSession() 
    { 
     NHibernateSession.Init(
      webSessionStorage, 
      new string[] { Server.MapPath("~/bin/DAL.Server.Data.dll") }, 
      new AutoPersistenceModelGenerator().Generate(), 
      Server.MapPath("~/NHibernate.config")); 
    } 

我的問題是,每當我需要更新NHibernate.config連接字符串連接到不同的數據庫(用於測試目的,在部署服務器上)NHibernate仍然保持與之前連接的數據庫的連接。

只有重新啓動IIS才能解決此問題。有沒有人有任何想法,如果這是由於IIS中的緩存類型?或者我錯過了一些設置?提前致謝!

回答

1

nhibernate.config文件中的更改不強制重新啓動IIS應用程序,這意味着它將繼續使用與配置的ISessionFactory和IOC容器相同的性能。

最好是配置nhibernate以使用存儲在web.config文件中並由名稱引用的連接字符串。

你可以做的另一件事是將nhibernate的配置移動到web.config文件中。然後改變它會強制重新配置nhibernate。

+0

感謝您的回答。我知道只要應用程序仍然使用相同的HttpAppilcation實例,它就不會被重置。因此,爲Web應用程序回收應用程序池實際上也會刷新NHibernate連接。謝謝! – rm6 2012-07-24 20:55:18