Подтвердить что ты не робот

Увеличение времени сеанса сеанса

Сайт, размещенный через IIS 7.0

Я хотел бы установить время ожидания сеанса до 9 часов в моем приложении ASP.NET.
Это установлено в web.config

<sessionState timeout="540"></sessionState>

Но, как я понимаю, если тайм-аут установлен на 20 минут в IIS, где размещен веб-сайт, установка расширенного состояния сеанса будет бесполезной.

Во-первых, я хотел бы подтвердить, правильно ли это предположение.

Проблема в том, что у меня нет доступа к IIS моего общедоступного веб-сервера.

Теперь, после некоторых исследований, я придумал другое решение в проекте кода. Это звучит как wonderful idea. Идея состоит в том, чтобы вставить iframe на главную страницу. IFrame будет содержать другую страницу с обновлением meta менее 20 минут.

 Response.AddHeader("Refresh", "20");

Эта идея показалась мне хорошей. Но статье 7 лет. Плюс в разделе комментариев пользователь жалуется, что это не сработает, если страница сведена к минимуму, и я обеспокоен тем, что это происходит, когда вкладка моих страниц неактивна.

Я хотел бы знать эти вещи

  • Будет ли метод обновления работать для моего сценария, даже если страница сведена к минимуму?
  • Существуют ли какие-либо другие методы, которые могут увеличить время сеанса, которое отменяет настройку тайм-аута IIS?
  • Также я прочитал несколько вопросов в Stack Overflow, где в ответах указано, что тайм-аут сеанса IIS предназначен для класических страниц ASP. Тогда почему мой расширенный тайм-аут не стреляет?
4b9b3361

Ответ 1

Во-первых, я хотел бы подтвердить, правильно ли это предположение.

Да, это предположение абсолютно правильно, если вы используете режим состояния сеанса в памяти. В этом случае сеанс хранится в памяти, и поскольку IIS может срывать AppDomain при разных обстоятельствах (период бездействия, достигнуты транзакции CPU/памяти,...) данные сеанса будут потеряны. Вы можете использовать режим состояния сеанса вне процесса. Либо StateServer, либо SQLServer. В первом случае сеанс хранится в памяти специального выделенного компьютера, на котором запущена служба aspstate Windows, а во втором случае это выделенный SQL Server. SQL Server является наиболее надежным, но, очевидно, самым медленным.

1) Будет ли метод обновления работать для моего сценария, даже если страница сведена к минимуму?

Скрытый iframe по-прежнему работает, чтобы поддерживать сеанс, но, как я уже говорил ранее, могут возникнуть некоторые условия, когда IIS выгружает приложение в любом случае (достигнуты транзакции CPU/памяти = > , вы также можете настроить это в IIS).

2) Существуют ли какие-либо другие методы, которые могут увеличить время сеанса, которое отменяет настройку тайм-аута IIS?

Предыдущий метод не увеличивает тайм-аут сеанса. Он просто поддерживает сеанс в режиме ожидания, регулярно отправляя HTTP-запросы на сервер, чтобы предотвратить отказ IIS от AppDomain.

3) Также я прочитал несколько вопросов в переполнении стека, где ответы что тайм-аут сеанса IIS предназначен для класических страниц ASP. Тогда почему мой расширенный тайм-аут не стреляет?

Нет такой вещи, как тайм-аут сеанса IIS. Сеанс представляет собой артефакт ASP.NET. IIS - это веб-сервер, который ничего не знает о сеансах.

Лично я не использую сеансы в своих приложениях. Я просто отключил их:

<sessionState mode="Off"></sessionState>

и использовать стандартные HTTP-артефакты, такие как файлы cookie, параметры строки запроса,... для сохранения состояния. Я предпочитаю сохранять информацию в своем бэкэнд и извлекать ее позже, используя уникальные идентификаторы вместо того, чтобы полагаться на сеансы.