我可以找到Azure角色类型(工作人员或Web)吗?

时间:2012-01-16 08:46:03

标签: azure

有没有办法找到角色类型(工作人员或网络)?也许管理API?

感谢, 纳瓦

4 个答案:

答案 0 :(得分:1)

Web角色将在E:或F:驱动器上有一个Sitesroot文件夹,您可以编写几行代码来查看该文件夹是否存在。我想不出通过API的方法。

public static bool IsWebRole()
{
    return (System.IO.Directory.Exists(@"E:\sitesroot") || System.IO.Directory.Exists(@"F:\sitesroot"));
}

答案 1 :(得分:1)

我猜您可以从 GetHostedService 中的 RoleName InstanceName 解析/感知。确保您使用 embed-detail = true 来获取有关服务部署的详细信息。

更多信息:http://msdn.microsoft.com/en-us/library/windowsazure/ee460806.aspx

答案 2 :(得分:0)

使用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));
}

答案 3 :(得分:0)

这是来自部署内部。如果" WaWorkerHost" 进程存在,则为工作者角色,否则为web角色。你也可以检查" WaIISHost"

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