Определить веб-роль Azure или рабочую роль? (Альтернативно: определить, работает ли в IIS?) - PullRequest
0 голосов
/ 23 марта 2012

У меня есть код, который я использую как в коде запуска рабочей роли, так и в коде запуска веб-роли. В Worker код вызывается из метода Run(); в веб-роли он называется Application_Start.

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

Обратите внимание, что проверка HttpContext не будет работать, так как я работаю в Application_Start.

Ответы [ 2 ]

1 голос
/ 24 марта 2012

Ну,

Этот вопрос задавался более и снова.Что я могу придумать, так это использовать подход для перечисления всех сайтов в текущем экземпляре роли (подход ServerManager).Если вызов ServerManager завершается неудачно или сайтов вообще нет, значит, вы находитесь в рабочей роли.В противном случае - веб-роль.Я думаю, что это самый надежный способ проверить.

Не забывайте, что IIS все еще существует в рабочих ролях (вы можете выполнить RDP для любой рабочей роли и увидите, что роль сервера IIS присутствует).Это просто не началось!Таким образом, «Веб-сайт по умолчанию» все еще может существовать (никогда не проверяйте его!).

0 голосов
/ 26 ноября 2015

Это рабочая роль, если "WaWorkerHost" процесс существует, иначе это веб-роль. Вы также можете проверить "WaIISHost" вместо.

    bool isWorkerRole = false;
    foreach (Process proc in Process.GetProcessesByName("WaWorkerHost"))
    {
        isWorkerRole = true;
    }           
...