изменение в сайте ASP.NET уничтожают активные сессии?

Я обеспокоен возможностью отметаемых сессий своих пользователей. Я использую объект Сессии ASP.NET по умолчанию и сеансовые куки. Я знаю, что сессии могут испытать таймаут, и я установил значение тайм-аута для своих сессий к нескольким часам для предотвращения неожиданных тайм-аутов.

Но существует по крайней мере два других случая, по поводу которых я волнуюсь.

(1) Я понимаю, что ASP.NET периодически перерабатывает домен приложения выполнение сайта/веб-приложения (не уверенный, если у меня есть вся терминология, корректная здесь). Сессии живут через них, перерабатывают события?

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

Спасибо за любые указатели.

11
задан Branislav Abadjimarinov 1 October 2010 в 07:28
поделиться

3 ответа

Это зависит от Вашего режима сеанса. Вот копия того, что Вы можете найти на Поддержка Microsoft:

ASP.NET поддерживает три режима session state:

  • InProc: В режиме-Proc значения сохраняются в памяти ASP.NET. рабочий процесс. Таким образом, этот режим предлагает самый быстрый доступ к этим значениям. Однако, когда работник ASP.NET циклы обработки, данные о состоянии lost.
  • StateServer: С другой стороны, режим StateServer использует автономный служба Microsoft Windows для хранения переменные сессии. Потому что это служба не зависит от Microsoft Информационный Интернет-сервер (IIS), это может работать на отдельном сервере. Вы можете использовать этот режим для балансировки нагрузки решение потому, что несколько веб-серверов может делиться переменными сессии. Хотя переменные сессии не теряются, если Вы перезагрузка IIS, влияет на производительность когда вы пересекаете границы процесса.
  • SqlServer: Если вы сильно обеспокоены сохранением информация о сеансе, вы можете использовать Режим SqlServer для использования Microsoft SQL Server для обеспечения наивысшего уровня надежности. Режим SqlServer аналогично внепроцессному режиму, за исключением что данные сессии хранятся в SQL-сервер. Режим SqlServer также позволяет использовать государственный магазин который находится вне процесса IIS и который может быть расположен на местном компьютера или удаленного сервера.

Если вы используете StateServer или базу данных, данные вашей сессии не будут потеряны, когда IIS обнаружит изменение на сайте.

.
12
ответ дан 3 December 2019 в 08:04
поделиться

(1) Если вы используете в режиме "В процессе сессии" на Recycling the application pool (Восстановление пула приложений), вы потеряете информацию о сессии

(2) Зависит от того, используете ли вы веб-приложение или модель сайта для вашего приложения asp.net. Некоторые файлы кэшируются при запуске приложения и требуют перезапуска или перекомпиляции, если они были изменены. Эмпирическое правило заключается в том, что если вы измените Global.asax, конфигурационный файл добавления, удаления или редактирования файла в папке \bin, то будет выдан перезапуск приложения и данные In Process Session будут потеряны.

ASP.NET Session имеет много недостатков, и многие разработчики его вообще не используют. Лично я предпочитаю хранить данные в пользовательских таблицах на сервере SQL (если есть).

Если вы хотите предоставить больше информации, например, какую версию IIS вы имеете, используете ли вы вебсайт или модель веб-приложения, есть ли у вас доступный сервер базы данных, используете ли вы веб ферму или сервер веб сада, и какую информацию вы хотите хранить, и как долго я могу дать вам более конкретный совет.

.
3
ответ дан 3 December 2019 в 08:04
поделиться

Если вы используете режим InProc, вы потеряете данные о сессии, если AppPool будет переработан, что может произойти либо раз в день или около того (согласно расписанию по умолчанию), либо примерно через 20 минут бездействия на сервере.

Что касается обновлений страниц: каждый раз, когда вы меняете файл на живом сайте, есть вероятность того, что сайт перезапустится, как если бы вы изменили web.config. Некоторые файлы не приведут к полному перезапуску, но нелегко предсказать, какие именно, а также это зависит от режима компиляции, который вы используете (пакетный или нет). Если вы используете режим пакетной компиляции по умолчанию для каждой папки, вы должны иметь возможность изменять отдельные страницы в подпапках без необходимости перезапуска. Изменения в мастер-страницах, коде или элементах управления, однако, могут вызвать перезапуск, так же как и изменения в папке верхнего уровня (в зависимости от того, что у вас там еще есть).

Думаю, мне следует добавить, что изменение отдельных файлов на живом сайте, как правило, не очень хорошая идея - хотя я уверен, что у вас есть на то причины.

.
0
ответ дан 3 December 2019 в 08:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: