Сервер состояний 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, говорит с поставщиком состояния сеанса для сохранения состояния.
Другие вопросы по тегам