测试用例:
默认配置在端口80上定义端点,没有任何主机头。
我原以为这会转化为
的绑定 *:80:
然而,它实际上创建了一个绑定:
10.211.196.111:80:
其中10.211.196.111
是Web角色实例的IP地址。
如果我们查看机器上的可用IP地址,我们有2:
有趣的是,如果我们将IIS绑定更改为侦听所有IP地址*:80
,网站实际上将停止工作。相反,我们会收到503 - Service unavailable
错误。
为什么这对我很重要?我们最近一直在使用Azure Accelerator来处理Web角色,并且发现如果您没有指定主机名它就不起作用。如上所述,原因是它会将空主机名解释为*.80
,这当然会导致503错误。
所以第一个问题是 - 有人可以解释这种行为(为什么监听所有IP地址都不起作用)以及第二个IP地址用于什么?
由于看起来我需要修补azure加速器以便它使用实例的特定IP地址,建议的方法是什么?您认为查找以Microsoft Virtual Machine Bus Network Adapter
或特定子网开头的适配器是否安全?
谢谢,
本
答案 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以侦听特定主机名,否则将进行其他管理更改。