有没有办法找到角色类型(工作人员或网络)?也许管理API?
感谢, 纳瓦
答案 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;
}