IIS中的Azure Web角色IP地址的奇怪行为

时间:2011-08-04 11:15:12

标签: iis azure

测试用例:

  • 使用标准的asp.net网站模板创建了新的云项目。
  • 部署。

默认配置在端口80上定义端点,没有任何主机头。

我原以为这会转化为

的绑定

*:80:

然而,它实际上创建了一个绑定:

10.211.196.111:80:

其中10.211.196.111是Web角色实例的IP地址。

如果我们查看机器上的可用IP地址,我们有2:

  1. 10.211.196.111
  2. 2001:0:4137:9e76:C8C:387d:f52c:3b90
  3. 有趣的是,如果我们将IIS绑定更改为侦听所有IP地址*:80,网站实际上将停止工作。相反,我们会收到503 - Service unavailable错误。

    为什么这对我很重要?我们最近一直在使用Azure Accelerator来处理Web角色,并且发现如果您没有指定主机名它就不起作用。如上所述,原因是它会将空主机名解释为*.80,这当然会导致503错误。

    所以第一个问题是 - 有人可以解释这种行为(为什么监听所有IP地址都不起作用)以及第二个IP地址用于什么?

    由于看起来我需要修补azure加速器以便它使用实例的特定IP地址,建议的方法是什么?您认为查找以Microsoft Virtual Machine Bus Network Adapter或特定子网开头的适配器是否安全?

    谢谢,

1 个答案:

答案 0 :(得分:3)

我认为另一个IP地址是用于VM中的第二个网络适配器,用于VM和结构控制器之间的内部通信。您可能没有绑定到该其他地址的权限(因此通配符“所有未分配的IP地址”映射不起作用)。

但是,我不太相信。如果(我相信你所说的)Windows Azure Accelerator for Web Roles将所有内容绑定到*:80: hostname ,这似乎证明你可以做类似的绑定。

在任何情况下,要获取IP地址,您只需使用RoleEnvironment.CurrentRoleInstance.Endpoints [“ name ”]。IPEndpoint。我认为对于 name ,您需要 HttpIn 作为加速器。您可以尝试在该代码中使用该IP地址而不是“*”并查看它是否有帮助,但请注意管理UI本身具有通配符映射,因此您可能会遇到某种冲突(并且无法进行除非您还更改管理UI以侦听特定主机名,否则将进行其他管理更改。