以编程方式访问对等角色主机名

时间:2012-06-21 22:56:36

标签: azure azure-configuration

page描述了如何通过cscfg将主机名分配给角色实例。我如何在我的应用程序中访问它?由于RoleInstance没有VMName成员,因此以下方法无效。

foreach (RoleInstance instance in RoleEnvironment.Roles["MyRole"].Instances) {
    Console.WriteLine(instance.VMName);
}

2 个答案:

答案 0 :(得分:0)

当您进入虚拟机时,可以使用任何.NET API在代码中获取主机名,即:

Dns.GetHostName();

您可以更改Windows Azure VM主机名的原因是,在大多数情况下,VM主机名设置为RD00 * ** ,因此如果您有多个实例,则所有主机名都不同,不容易记住和管理。因此,要保持所有主机名易于记忆,您将使用以下属性,因此与同一角色相关的所有实例都将具有名称为vm-name ##,这样您就可以轻松记住主机名并正确管理它们。

<Role name="<role-name>" vmName=“<vm-name>”>

因此,要更改主机名,您可以使用上面的配置设置,但要获取主机名,您只需使用标准的.net API即可。

答案 1 :(得分:0)

正如@AvkashChauhan指出的那样,您应该能够通过Dns类检索主机名。不过,我很好奇,为什么你需要主机名。如果它是用于角色实例之间的通信,则实际上不需要主机名。相反,您可以查询角色实例端点(假设您将其设置为内部端点),然后对于每个实例,您可以请求IP地址和端口,这将允许您建立与任何给定实例的直接连接。所以,修改你的代码:

foreach (RoleInstance instance in RoleEnvironment.Roles["MyRole"].Instances) {
   writeline(InstanceEndpoints["myendpoint"].IPEndpoint);

你可能确实需要某个东西的主机名,如果有的话,请忽略这个答案。但是......如果您正在寻找的是在角色实例之间建立tcp / http / udp连接的方法,这是检索角色实例的所有ip /端口组合的一种非常简单的方法。