Для веб-приложения логично привязать время жизни сессии NHibernate ко времени жизни запроса (request). Новая сессия открывается при запросе к серверу и закрывается когда запрос обработан и пользователю вернулся ответ. Практически все web-каркасы поддерживают механизм слежения за жизненным циклом запроса. В ASP.NET можно использовать модули и хендлеры.
Spring.NET уже имеет в своей поставке специальный модуль для этих целей — OpenSessionInViewModule
. Сам механизм привязки сессии к запросу в терминологии Spring называется open session in view (OSIV) pattern.