带有 NHibernate 的 MVC 中的数据库权限



我正在使用Fluent NHibernate开发Intranet MVC Web应用程序。

众所周知,创建必要的ISessionFactory很繁重,因此只能执行一次。因此,我在Application_Start期间在 Global.asax 文件中创建它,然后将其缓存在应用程序中以备将来使用。

问题是我只想向已经对数据库具有权限的用户授予访问权限。

理论上,这可以通过在连接字符串中定义Integrated Security=SSPI来解决(而不是通过提供 SQL 用户名和密码)。

但是,这会在 Fluently.Configure 期间引发错误,因为配置发生在 Application_Start 期间,该 由托管应用程序的进程运行,该进程无权连接到数据库。

如何解决此问题?

你可以用BeginRequest而不是Application_Start初始化它:

private static bool _initialized = false;
private static object _syncRoot = new object();
protected void Application_BeginRequest(object source, EventArgs e)
{
    if (_initialized)
    {
        return;
    }
    lock (_initialized)
    {
        if (_initialized)
        {
            return;
        }
        // Initialize the session factory here and cache it
        _initialized = true;
    }
}

最新更新