Сервер состояний ASp.net, работающий с IRequiresSessionState против IReadOnlySessionState?
Мой друг задал здесь вопрос
А тот, кто ему ответил, - написал что-то интересное! (без каких-либо доказательств, источник).
Это имеет большее значение, когда вы используете внешнее хранилище состояния сеанса. В этом случае без интерфейса система все равно будет хранить данные сеанса в удаленной базе данных, даже если они не изменились (система не отслеживает, были ли данные сеанса изменены во время запроса). При использовании интерфейса IReadOnlySessionState фаза обратной записи пропускается.
Где это говорит, что IRequiresSessionState запишет сессию (даже если хадент изменился)?
любые объяснения будут с удовольствием исключены.
1 ответ
Не могу найти официальную документацию по этому вопросу, но запускаю dotPeek (или какой-то другой дизассемблер) и осматриваюсь System.Web
последовательно раскрывает, что:
- когда
HttpContext.Handler
являетсяset
, если обработчик реализуетIRequiresSessionState
,HttpContext._requiresSessionStateFromHandler
установленоtrue
; - этот последний частный член информирует
get
тер дляHttpContext.RequiresSessionState
; SessionStateModule
(что я догадываюсь, всегда находится в конвейере модуля), в егоEndRequest
обработчик, чекиHttpContext.RequiresSessionState
и если этоtrue
, говорит с поставщиком состояния сеанса для сохранения состояния.