Во-первых, я хотел бы подтвердить, верно ли это предположение.
Да, это предположение абсолютно верно, если вы используете режим состояния сеанса в памяти.В этом случае сеанс сохраняется в памяти, и, поскольку IIS может разрушить домен приложения при различных обстоятельствах (период бездействия, пороги ЦП / памяти достигнуты ...), данные сеанса будут потеряны.Вы можете использовать режим состояния сеанса вне процесса.Либо StateServer или SQLServer.В первом случае сеанс хранится в памяти специального выделенного компьютера, на котором запущена служба Windows при наличии состояния, а во втором случае это выделенный сервер SQL.SQL Server является самым надежным, но, очевидно, самым медленным.
1) Будет ли работать метод обновления для моего сценария, даже если страница свернута?
скрытый iframe по-прежнему работает для поддержания сеанса в рабочем состоянии, но, как я уже говорил ранее, могут быть некоторые условия, когда IIS все равно выгружает приложение (пороги ЦП / памяти достигаются => вы также можете настроить это в IIS).
2) Существуют ли другие методы, которые могли бы увеличить время ожидания сеанса, которое отменяет настройку времени ожидания IIS?
Предыдущий метод не увеличивает время ожидания сеанса.Он просто поддерживает работу сеанса, отправляя HTTP-запросы на сервер через регулярные промежутки времени, чтобы IIS не мог закрыть AppDomain.
3) Также я прочитал некоторые вопросы в Переполнение стека, где в ответах говорится, чтоТайм-аут сеанса IIS для классических страниц ASP.Тогда почему мой расширенный тайм-аут не срабатывает?
Нет такой вещи, как тайм-аут сеанса IIS.Сеанс является артефактом ASP.NET.IIS - это веб-сервер, который ничего не знает о сессиях.
Лично я не использую сессии в своих приложениях.Я просто отключаю их:
<sessionState mode="Off"></sessionState>
и использую стандартные артефакты HTTP, такие как куки, параметры строки запроса, ... для поддержания состояния.Я предпочитаю сохранять информацию в моем бэкэнде и получать ее позже, используя уникальные идентификаторы, а не полагаться на сеансы.