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 仍然保持与先前连接的数据库的连接。

只有重新启动 IIS 才能解决此问题。有谁知道这是否是由于 IIS 中的缓存造成的?还是我错过了一些设置?提前致谢!

4

1 回答 1

1

nhibernate.config 文件中的更改不会强制重新启动 IIS 应用程序,这意味着它会继续使用相同的 ISessionFactory 和配置的 IOC 容器。

最好的方法是将 nhibernate 配置为使用存储在 web.config 文件中并按名称引用的连接字符串。

您可以做的另一件事是将 nhibernate 的配置移动到 web.config 文件中。然后 chagning 它将强制重新配置 nhibernate。

于 2012-07-24T04:56:05.937 回答