Как сказал Дэвид М, вам нужно убедиться, что вы связываете свой сеанс NHibernate. Вот как я делаю это прямо сейчас в моем приложении ASP.NET:
public class NHHttpModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.EndRequest += ApplicationEndRequest;
context.BeginRequest += ApplicationBeginRequest;
}
public void ApplicationBeginRequest(object sender, EventArgs e)
{
CurrentSessionContext.Bind(NHSessionFactory.GetNewSession());
}
public void ApplicationEndRequest(object sender, EventArgs e)
{
ISession currentSession = CurrentSessionContext.Unbind(
NHSessionFactory.GetSessionFactory());
currentSession.Close();
currentSession.Dispose();
}
public void Dispose()
{
// Do nothing
}
}
Я создаю собственный модуль HttpModule, который связывает мою сессию с каждым запросом, а затем добавляю этот модуль в свой файл web.config, например:
<httpModules>
<add name="NHHttpModule" type="MyApplication.Core.NHHttpModule, MyApplication,
Version=1.0.0.0, Culture=neutral" />
</httpModules>
Я уверен, что ваша конфигурация отличается от этой, но это всего лишь пример того, как я связываю свою сессию. Надеюсь, это немного поможет.