#asp.net #nhibernate #orm
#asp.net #nhibernate #orm
Вопрос:
Я использую HttpModule для открытия сеанса, охватывающего каждый запрос, и он отлично работает с отложенной загрузкой и всем остальным.
Меня беспокоит то, что, поскольку я открываю новый сеанс по запросу (и сохраняю его в HttpContext.Current.Элементы) он открывает сеанс для каждого запроса, даже запроса, включая запрос на файлы .css и изображения. Я вспоминаю, что читал, что создание сеанса — довольно легкая операция (хотя не знаю о транзакциях), но в любом случае кажется ненужным открывать сеанс для запросов на файл .css?
У кого-нибудь есть какие-то идеи по этому поводу, это проблема и / или я делаю что-то глупое?
Заранее спасибо
Комментарии:
1. вы имеете в виду HttpModule, а не HttpHandler, верно?
2. Вы, конечно, правы, ответ сейчас отредактирован. Спасибо
Ответ №1:
-
создавайте объект сеанса, только если тип файла .aspx или .ashx:
switch (context.Request.CurrentExecutionFilePathExtension.ToLower()) { case ".aspx": case ".ashx": context.Items[ContextKey] = CreateMySession(); break; }
-
или инкапсулируйте создание сеанса внутри средства получения свойств, и очистка проверяет, является ли
session != null
Комментарии:
1. Насколько дорого начинать транзакцию Nhib для каждого запроса (в aspx / ashx)? Могу ли я получать транзакцию для каждого запроса или я должен открывать их явно при необходимости?