В IIS 6 перейдите в раздел Пулы приложений и щелкните правой кнопкой мыши> Свойства в пуле, в котором размещается рассматриваемое приложение ASP.NET. Перейдите на вкладку «Производительность» и снимите флажок «Завершать рабочие процессы после простоя:»
В IIS 7 перейдите на панель «Подключения», найдите пулы приложений и выберите «Дополнительные параметры» для пула, в котором размещается ваше приложение. Найдите свойство «Idle Timeout» и установите для него «0» (это отключает его).
По умолчанию 20 минут бездействия. Если снять флажок, когда ваш AppDomain будет загружен рабочим процессом , он никогда не умрет (если вы, конечно, не убьете процесс или что-то еще). По умолчанию IIS перезапускает процесс , когда он достигает некоторого предела, такого как ограничение памяти, но он также запускает новый и «фазирует» все входящие запросы, пока старый не будет использован, поэтому чтобы минимизировать нарушение.
Я также написал небольшой класс c #, который будет поддерживать ваше приложение ASP.NET живым ( альтернативная архивная версия ) при нормальных обстоятельствах. Поскольку он работает внутри приложения, очевидно, что он не может помешать IIS или чему-либо еще явно убить процесс, но он будет поддерживать приложение «горячим», например, приложение никогда не будет простаивать достаточно долго, чтобы IIS решил отключить его.
Если у вас нет прямого контроля над конфигурацией IIS (например, совместно используемым хостом), лучше всего иметь небольшое приложение, работающее в отдельной системе, например, постоянно включенной рабочей станции, которое будет попадать на ваш сайт каждый раз. минут, чтобы не допустить истечения срока действия пула приложений. Ничего особенного - подойдет простой WebRequest и цикл while () в консольном приложении.