Могу ли я найти тип роли Azure (рабочий или веб)? - PullRequest
0 голосов
/ 16 января 2012

Есть ли способ найти тип роли (рабочий или веб)? Может быть, API управления?

спасибо, Нав

Ответы [ 4 ]

1 голос
/ 16 января 2012

Полагаю, что вы можете анализировать / воспринимать RoleName и InstanceName из GetHostedService .Убедитесь, что вы сделали embed-detail = true , чтобы получить подробную информацию о развертываниях службы.

Подробнее: http://msdn.microsoft.com/en-us/library/windowsazure/ee460806.aspx

1 голос
/ 16 января 2012

Веб-роль будет иметь папку Sitesroot на диске E: или F: вы можете написать несколько строк кода, чтобы увидеть, существует ли эта папка. Я не могу придумать, как пройти через API.

public static bool IsWebRole()
{
    return (System.IO.Directory.Exists(@"E:\sitesroot") || System.IO.Directory.Exists(@"F:\sitesroot"));
}
0 голосов
/ 26 ноября 2015

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

    bool isWorkerRole = false;
    foreach (Process proc in Process.GetProcessesByName("WaWorkerHost"))
    {
        isWorkerRole = true;
    }           
0 голосов
/ 06 декабря 2013

Используя SDK 2.2, я все еще не мог найти лучшего и более надежного решения, чем полагаться на имя роли.

public static bool IsWebRole()
{
    var roleName = RoleEnvironment.CurrentRoleInstance.Role.Name;
    var match = Regex.Match(roleName, ".*webrole.*?", RegexOptions.IgnoreCase);
    if (match.Success) return true;
    match = Regex.Match(roleName, ".*workerrole.*?", RegexOptions.IgnoreCase);
    if (match.Success) return false;
    throw new Exception(String.Format("Can't figure out role type of {0}", roleName));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...