Asp.net mvc 2 使用NHibernate的MVC中的数据库权限

Asp.net mvc 2 使用NHibernate的MVC中的数据库权限,asp.net-mvc-2,fluent-nhibernate,intranet,sessionfactory,Asp.net Mvc 2,Fluent Nhibernate,Intranet,Sessionfactory,我正在使用Fluent NHibernate开发一个内部网MVC web应用程序 众所周知,创建必要的ISessionFactory是一项繁重的工作,因此只需完成一次。因此,我在应用程序启动期间在Global.asax文件中创建它,然后将其缓存在应用程序中以备将来使用 问题是,我只想将访问权限授予已经拥有数据库权限的用户 理论上,这可以通过在连接字符串中定义integratedsecurity=SSPI来解决(而不是通过提供SQL用户名和密码) 但是,这会在流畅地期间引发错误。配置,因为配置发生

我正在使用Fluent NHibernate开发一个内部网MVC web应用程序

众所周知,创建必要的ISessionFactory是一项繁重的工作,因此只需完成一次。因此,我在
应用程序启动期间在Global.asax文件中创建它,然后将其缓存在应用程序中以备将来使用

问题是,我只想将访问权限授予已经拥有数据库权限的用户

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

但是,这会在流畅地
期间引发错误。配置
,因为配置发生在
应用程序启动期间,该过程由承载应用程序的进程运行,该进程没有连接到数据库的权限


如何解决此问题?

您可以在
BeginRequest
中初始化它,而不是在
应用程序启动中初始化它:

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;
    }
}