Если веб-приложение запрашивает настройку самого себя, его пул приложений должен быть настроен в applicationHost.config как:
<add name="AppPool" managedRuntimeVersion="v4.0" startMode="AlwaysRunning" />
Можно ли добиться того же результата, просто запрашивая страницу с сервера каждую минуту? Или установка этого значения startMode имеет и другие последствия?
Вроде то же самое. По-видимому, поскольку Microsoft увидела, что разработчики должны это делать, они создали эту новую функцию, чтобы автоматически справиться с этим.
Затем [разработчики] либо разрабатывают собственные сценарии для отправки ложных запросов в приложение, чтобы периодически «разбудить его» и выполнить этот код до того, как клиент попадет в него, либо просто заставят неудачливого первого клиента, который обращается к приложению, ждать, пока эта логика завершится, прежде чем обработка запроса (что может привести к длительной задержке для них).
ASP.NET 4 поставляется с новой функцией, называемой «автозапуск», которая лучше подходит для этого сценария, и доступна, когда ASP.NET 4 работает на IIS 7.5 (который поставляется с Windows 7 и Windows Server 2008 R2). Функция автоматического запуска обеспечивает управляемый подход к запуску рабочего процесса приложения, инициализации приложения ASP.NET и последующему принятию HTTP-запросов.
От Скотта Гатри Автозапуск приложений ASP.NET (серии VS 2010 и .NET 4.0).
Поэтому, если вы не используете IIS 7.5, я бы сказал, что просто используйте встроенные функции.
(И спасибо; я не знал об этой функции, но определенно могу подумать о сайтах, которые я разрабатываю для этих целей).
IIS 7.5 включает дополнительный флаг на уровне сайта или приложения, называемый preloadEnabled
. Установка значения true создаст поддельный запрос на разогрев сайта. Он должен использоваться вместе с autoStart
.
автоматический старт
<add name="{yourapppoolname}" autoStart="true" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" startMode="AlwaysRunning" />
preloadEnabled
<site name="YOURSITENAMEHERE" id="4″>
<application path="/" applicationPool="YOURAPPPOOL" preloadEnabled="true">
<virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\YOURSITENAME" />
</application>
</site>