2010-12-04 6 views
1

Насколько я знаю, приложение ASP.NET заканчивается всякий раз, когда нет сеанса пользователя, время сеанса по умолчанию составляет 20 минут. После этого времени он снова оживает, когда появится новый запрос.Могу ли я настроить IIS, чтобы мое приложение ASP.NET было навсегда?

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

Как настроить IIS для разных действий?

Я узнал, что пул приложений на IIS 7.5 имеет свойство, называемое автозапуском, и другое время простоя бездействия. В документации говорится, что если я установил автозапуск в true и idle-time-out равным нулю, то пул приложений начнется, когда IIS начнет работу и не будет таймаутом. Но я не знаю, как он интегрирован в ASP.NET. Означает ли это, что Application_Start будет запускаться с запуском IIS и что это не повторится до следующего перезапуска IIS?

ответ

2

Я использую uptime robot, чтобы гарантировать, что мое приложение всегда развернуто. Красота этой системы заключается в том, что она запрашивает заголовки страницы на вашем сайте и получает коды статуса «200-ok», «404-not found» и т. Д. Каждые 5 минут. Это означает, что робот бездействия не добавляет шума в Google Analytics, поскольку страница никогда не запрашивается.

Кажется, работает как сон для меня и его БЕСПЛАТНО!

+0

Я просто добавил монитор. Если это предотвратит остановку AppPool, я буду очень рад! –

+0

Пул приложений может быть остановлен по другим причинам, превышена память и т. Д. Вы все еще можете использовать утилиту пула приложений, но, надеюсь, это ограничит ее – Rippo

1

Для настройки вы описываете для IIS 7.5:

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

Но Application_Start будет запускаться каждый раз, когда произойдет такой перезапуск. И, конечно же, администратор всегда может перерабатывать пул приложений.

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

0

Для приложений ASP.NET 4.0+ на IIS7.5 + - вы можете настроить автозапуск и перенести свой код запуска из Application_Start в global.asax в метод Preload класса. Смотрите это: http://weblogs.asp.net/scottgu/auto-start-asp-net-applications-vs-2010-and-net-4-0-series

Вот пример использования IIS8 GUI: http://www.codeproject.com/Articles/795265/IIS-Asp-net-warm-up-Auto-Start-Application

Смежные вопросы