我在 Compute Emulator 上使用 Azure 示例,我发现如果我OnStart()
在我的类中继承自RoleEntryPoint
相当慢的返回 Web 角色中的 .aspx 页面甚至在OnStart()
返回之前接受 HTTP 请求。
我觉得这很令人困惑——为什么 IIS 会接受对尚未开始的角色的请求?
模拟器不会 100% 模拟负载均衡器。对于云,当您的角色在 OnStart() 中时,您会向 LB 报告为 Busy,并且不会将任何流量路由到它。一旦您从 OnStart() 返回并返回 true,将需要几秒钟左右的时间,但只有到那时 LB 才会开始路由到它。您可以通过跟踪您的 OnStart() 并在其中放置一个大的 Sleep() 来自己测试这一点。您将无法访问您的实例(通过非延迟端口)。
您当然可以要求 LB 忽略 Ready 状态,即使在忙碌时它也会路由 - 这是通过在端点上指定 ignoreRoleInstanceStatus="true" 来完成的。