Asp.net mvc 2 使用NHibernate的MVC中的数据库权限
我正在使用Fluent NHibernate开发一个内部网MVC web应用程序 众所周知,创建必要的ISessionFactory是一项繁重的工作,因此只需完成一次。因此,我在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用户名和密码) 但是,这会在流畅地期间引发错误。配置,因为配置发生
应用程序启动期间在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;
}
}