Я использую Asp.Net MVC и NHibernate.
Некоторые из моих файлов Global.asax показаны ниже:
public override void Init()
{
base.Init();
// The WebSessionStorage must be created during the Init() to tie in HttpApplication events
webSessionStorage = new WebSessionStorage(this);
}
/// <summary>
/// Due to issues on IIS7, the NHibernate initialization cannot reside in Init() but
/// must only be called once. Consequently, we invoke a thread-safe singleton class to
/// ensure it's only initialized once.
/// </summary>
protected void Application_BeginRequest(object sender, EventArgs e)
{
//the following code sets up the NHibernate Session Factory
NHibernateInitializer.Instance().InitializeNHibernateOnce(
() => InitializeNHibernateSession());
}
Всякий раз, когда AppPool перезагружается, выполнение следующего запроса занимает некоторое время, поскольку ему приходится ждать инициализации NHibernateSessionFactory. После этого все в порядке, пока не будет перезапущен следующий пул приложений.
Теперь я хотел бы переместить инициализацию в метод Application_Start, чтобы при повторном запуске пула перезапуск выполнял тяжелый PRIOR до следующего входящего запроса. Однако появляется комментарий «Из-за проблем в IIS7», который приходит из архитектуры S # arp я понял, что это не так просто.
Я нашел статью: http://scottsdalewebstudio.com/blog/mvc/mvc-sharp-iis7-nhibernate/, в которой говорится, что настройка IIS для использования «Классического режима» исправляет это - это единственный способ?