2012-06-21 39 views
2

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

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

回答

0

当你虚拟机里面,你可以使用任何.NET API在你的代码,即获取主机名:

Dns.GetHostName(); 

的原因,你可能会改变你的Windows Azure虚拟机的主机名在大多数情况下,VM主机名被设置为RD00 * **因此,如果您有多个实例,则所有主机名都会不同并且不易记忆和管理。因此为了让所有主机名都容易记住,您将使用以下属性,以便与相同角色相关的所有实例都具有名称vm-name ##,这样您可以轻松记住主机名并正确管理它们。

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

因此改变主机名,你可以使用上面的配置设置,但要获得主机名你可以使用标准的.NET API,它会工作。

0

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

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

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