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

IIS中Azure web角色IP地址的奇怪行为,iis,azure,Iis,Azure,测试用例: 使用标准asp.net网站模板创建了新的云项目 部署 默认配置在端口80上定义了一个端点,没有任何主机头 我本以为这会转化为一种 *:80: 但是,它实际上创建了以下内容的绑定: 10.211.196.111:80: 其中10.211.196.111是web角色实例的IP地址 如果我们查看机器上的可用IP地址,我们有2个: 10.211.196.111 2001:0:4137:9e76:c8c:387d:f52c:3b90 有趣的是,如果我们将IIS绑定更改为侦听所有IP地址*:

测试用例:

  • 使用标准asp.net网站模板创建了新的云项目
  • 部署
默认配置在端口80上定义了一个端点,没有任何主机头

我本以为这会转化为一种

*:80:

但是,它实际上创建了以下内容的绑定:

10.211.196.111:80:

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

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

  • 10.211.196.111
  • 2001:0:4137:9e76:c8c:387d:f52c:3b90
  • 有趣的是,如果我们将IIS绑定更改为侦听所有IP地址
    *:80
    ,网站实际上会停止工作。相反,我们得到了一个
    503-服务不可用
    错误

    为什么这对我很重要?我们最近一直在为web角色使用Azure Accelerator,发现如果不指定主机名,它将无法工作。如上所述,原因是它会将空主机名解释为
    *.80
    ,这当然会导致503错误

    因此,第一个问题是——有人能解释一下这种行为(为什么监听所有IP地址都不起作用)以及第二个IP地址的用途吗

    既然看起来我需要修补azure accelerator,以便它使用实例的特定IP地址,那么推荐的查找方法是什么?您认为寻找以Microsoft Virtual Machine Bus Network adapter或特定子网开头的适配器安全吗

    谢谢,

    Ben

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

    然而,我不太相信这一点。如果(我相信你所说的)用于Web角色的Windows Azure加速器将所有内容绑定到*:80:hostname,那么这似乎证明了你可以这样绑定


    无论如何,要获取IP地址,只需使用roleenEnvironment.CurrentRoleInstance.Endpoints[“name”].IPEndpoint。我想你会想要HttpIn作为加速器的名称。您可以尝试在代码中使用该IP地址而不是“*”,看看是否有帮助,但请注意,管理UI本身有一个通配符映射,因此可能会出现某种冲突(并且无法进行其他管理更改)除非您还将管理UI更改为侦听特定主机名。

    谢谢-我将在周末这样做。我已经将管理UI移动到另一个端口,因此冲突应该不会成为问题。我还没有测试它,但我认为管理UI不需要通配符绑定。最重要的是,无论管理UI使用哪个端口,都要为端口80添加端点-否则web部署将无法工作(我发现了一个艰难的方法):@Smarx解决方案是否会导致管理UI出现任何问题?@Robotsushi我们没有遇到任何问题。我在博客上写过这个