【问题标题】:NHibernate and Sharp Architecture - DB connection not refreshed after changing NHiberate.configNHibernate 和 Sharp 架构 - 更改 NHibernate.config 后未刷新数据库连接
【发布时间】:2012-07-23 22:42:32
【问题描述】:

我有一个用 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 中的缓存造成的?还是我错过了一些设置?提前致谢!

【问题讨论】:

    标签: asp.net web-services nhibernate sharp-architecture


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回答。我意识到只要应用程序仍在使用相同的 HttpAppilcation 实例,它就不会被重置。所以为 Web 应用程序回收应用程序池实际上也会刷新 NHibernate 连接。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 2011-09-13
    • 1970-01-01
    • 2011-09-13
    • 2013-01-08
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多