0

ASP.NETにWebサービスを実装しています。

次のように、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は以前に接続されたDBへの接続を維持します。

この問題を解決できるのは、IISを再起動することだけです。これがIISでの一種のキャッシングによるものかどうか、誰かが知っていますか?または私が見逃したいくつかの設定?前もって感謝します!

4

1 に答える 1

1

nhibernate.configファイルを変更しても、IISアプリケーションは強制的に再起動されません。つまり、構成されたISessionFactoryおよびIOCコンテナーと同じインスタンスで動作し続けます。

最善の方法は、web.configファイルに保存され、名前で参照される接続文字列を使用するようにnhibernateを構成することです。

あなたができるもう一つのことは、nhibernateの設定をweb.configファイルに移動することです。次に、それを変更すると、nhibernateの再構成が強制されます。

于 2012-07-24T04:56:05.937 に答える