Поддерживает ли Windows Azure модуль разогрева приложений или что-то подобное? - PullRequest
7 голосов
/ 19 марта 2010

У нас есть веб-роль, которую мы размещаем в Windows Azure, которая использует старый веб-справочник на основе ASMX для связи с внешней системой. Прокси-код веб-ссылки достаточно велик, и его создание в первый раз требует значительных затрат.

Мы бы хотели, чтобы этот запуск выполнялся при запуске веб-роли вместо первого запроса.

Я знаю, что IIS 7.5 имеет модуль Application Warm-Up , который позволил бы нам достичь этого, но у меня возникают проблемы с выяснением, существует ли что-то подобное с хостингом в Windows Azure.

Спасибо, Corey

Ответы [ 4 ]

5 голосов
/ 23 октября 2011

Мне нравится решение от Стива Маркса.

Добавьте эти строки в ServiceDefinition.csdef:

<Startup>
  <Task commandLine="startup\disableTimeout.cmd" executionContext="elevated" />
</Startup>

И добавить disableTimeout.cmd в папку с именем startup со следующей строкой кода:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

Оригинальное решение здесь: http://blog.smarx.com/posts/controlling-application-pool-idle-timeouts-in-windows-azure

При работе в эмуляторе, пожалуйста, прочитайте это: http://blog.smarx.com/posts/skipping-windows-azure-startup-tasks-when-running-in-the-emulator

1 голос
/ 23 марта 2010

Похоже, что обработчик Application_Start в Global.asax выполняется при развертывании веб-роли (для ASP.NET), а не по первому запросу, так что это будет работать для нас.

0 голосов
/ 05 ноября 2013

В этой статье ниже показано, как настроить Windows Azure WebRole:

http://fabriccontroller.net/blog/posts/iis-8-0-application-initialization-module-in-a-windows-azure-web-role/

Вы можете установить модуль в пакетный скрипт запуска, используя:

PKGMGR.EXE /iu:IIS-ApplicationInit

Затем в WebRole (я адаптировал это для работы с WebRole, размещающей несколько веб-сайтов):

public class WebRole : RoleEntryPoint
{
    public override void Run()
    {
        using (var serverManager = new ServerManager())
        {
            // The foreach ensures we enable initialization for all websites hosted on this WebRole.
            foreach (var application in serverManager.Sites.SelectMany(x => x.Applications))
            {
                application["preloadEnabled"] = true;
            }

            foreach (var applicationPool in serverManager.ApplicationPools)
            {
                applicationPool["startMode"] = "AlwaysRunning";
            }

            serverManager.CommitChanges();
        }

        base.Run();
    }

    public override bool OnStart()
    {
        // For information on handling configuration changes
        // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

        return base.OnStart();
    }
}
0 голосов
/ 21 марта 2010

Поскольку единственная цель виртуальной машины, на которой размещается веб-роль в Windows Azure, - отвечать на веб-запросы, я полагаю, что такая настройка является обязанностью облачной ОС, а не облачного приложения. При этом может быть интересно проверить, действительно ли облачная ОС Azure делает такую ​​настройку доступной по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...