Я нашел похожий вопрос "Механизм хранения уже настроен для этого приложения" , но не нашел четкого ответа.
После перезапуска пула приложений IIS иногда возникает ошибка "A Механизм хранения уже настроен »(NHibernate). В случае ошибки приложение перестает работать и вылетает с этой ошибкой для каждого запроса. Поможет только повторная переработка или iisreset
.
Также странно, что мы инициализируем NHibernate в методе Application_BeginRequest
(по каждому запросу), но куда бы я ни посмотрел, везде, даже в Sharp- Примеры архитектуры .
У меня есть следующий код в файле Global.asax:
using System;
using System.Web;
using SharpArch.NHibernate;
using SharpArch.NHibernate.Wcf;
public class GlobalAsax : HttpApplication
{
private WcfSessionStorage _webSessionStorage;
public override void Init()
{
base.Init();
_webSessionStorage = new WcfSessionStorage();
}
public void Application_Start(object sender, EventArgs e) { }
public void Application_BeginRequest(object sender, EventArgs e)
{
NHibernateInitializer.Instance().InitializeNHibernateOnce(Initialize);
}
private void Initialize()
{
NHibernateSession.InitStorage(_webSessionStorage); // <- An error occurs here.
// var configFolder = Server.MapPath(...);
// NHibernateSession.AddConfiguration(...);
}
}
Класс NHibernateInitializer
является одиночным и выглядит как поточно-ориентированный. Метод Initialize
должен быть выполнен только один раз, но оказывается, что это не так.
Почему такая ошибка может возникнуть после перезапуска пула приложений IIS? Какой лучший способ попытаться это исправить?