Можно ли препятствовать тому, чтобы приложение ASP.NET закрылось?

Фонд свободного программного обеспечения (Установленный 1985)

, Даже если Вы не искренний сторонник их философии, идеи, что они продвигали бесплатного программного обеспечения, открытый исходный код имел удивительное влияние на промышленность программного обеспечения и содержание в целом (например, Википедия).

17
задан John Bubriski 20 August 2009 в 13:57
поделиться

3 ответа

Вы можете сделать это несколькими способами.

  1. Если у вас есть контроль над IIS, вы можете изменить «Тайм-аут простоя» в пуле приложений, по умолчанию это 20 минут. .
  2. Если вы НЕ контролируете IIS (общий или другой хостинг), вы можете использовать внешнюю службу для проверки связи с сайтом. MyWebKeepAlive или Pingdom - хорошие варианты для этого.

Если вы выбрали второй вариант, я настоятельно рекомендую внешний источник, так как он менее управляем, и если вы этого не сделаете Если IIS доступен для настройки, у вас, скорее всего, нет сервера, на который можно добавить приложение ping.

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

Последняя мысль

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

27
ответ дан 30 November 2019 в 10:36
поделиться

В IIS 6 перейдите в раздел «Пулы приложений» и щелкните правой кнопкой мыши> «Свойства» в пуле, в котором размещается рассматриваемое приложение ASP.NET. Перейдите на вкладку «Производительность» и снимите флажок «Завершение рабочих процессов после простоя для:»

В IIS 7 перейдите на панель «Подключения», найдите «Пулы приложений» и выберите «Дополнительные параметры» для пула, в котором размещено ваше приложение. Найдите свойство «Тайм-аут простоя» и установите для него значение «0» (это отключает его).

По умолчанию - 20 минут бездействия. Если снять этот флажок, как только ваш домен приложения будет загружен рабочим процессом, он никогда не умрет (если вы, конечно, не убьете процесс или что-то в этом роде). По умолчанию IIS перезапускает процесс, когда он достигает некоторого предела, такого как ограничение памяти, но также запускает новый и «переходит в фазу». все входящие запросы, пока старый не будет неиспользован, чтобы свести к минимуму перебои.

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

7
ответ дан 30 November 2019 в 10:36
поделиться

Перейдите в диспетчер задач и убейте w3wp.exe (или aspnet_wp). Ничто не может вам помешать. В итоге, приложения ASP.NET не могут предполагать непрерывную функциональность.

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

0
ответ дан 30 November 2019 в 10:36
поделиться
Другие вопросы по тегам:

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