Сервер состояний ASp.net, работающий с IRequiresSessionState против IReadOnlySessionState? - PullRequest
0 голосов
/ 09 марта 2012

Мой друг задал здесь вопрос

А тот, кто на него ответил - написал что-то интересное!(без каких-либо доказательств, источник).

Это имеет большее значение, когда вы используете внешнее хранилище состояния сеанса.В этом случае без интерфейса система все равно будет хранить данные сеанса в удаленной базе данных, даже если они не изменились (система не отслеживает, были ли данные сеанса изменены во время запроса).Когда вы используете интерфейс IReadOnlySessionState, фаза обратной записи пропускается.

Где это говорит о том, что IRequiresSessionState запишет сеанс (даже если хадент был изменен)?объяснения будут с удовольствием исключены.

1 Ответ

2 голосов
/ 09 марта 2012

Не могу найти официальную документацию по этому вопросу, но при запуске dotPeek (или некоторого другого дизассемблера) и просмотре System.Web последовательно обнаруживается, что:

  • Когда HttpContext.Handler равно set, если обработчик реализует IRequiresSessionState, HttpContext._requiresSessionStateFromHandler устанавливается true;
  • этот последний частный участник сообщает get ter для HttpContext.RequiresSessionState;
  • SessionStateModule (который, как я догадываюсь, всегда находится в конвейере модуля), в своем обработчике EndRequest проверяет HttpContext.RequiresSessionState и, если это true, обращается к провайдеру состояния сеанса для сохранения состояния.
...