4

我注意到,当您 RDP 到 Windows Azure 上的 Web 角色实例以创建iisreset. 时,系统会World Wide Web Publishing Service关闭,而让您的角色重新启动并再次运行的唯一方法是重新启动上述服务或重新启动/重新启动您的实例。

由于我不知道的原因,Windows Azure 默认启动模式为World Wide Web Publishing Serviceto Manual,为什么iisreset你的 Web 角色对 WWW 不可用。

我找到了一个解决方案 - IMO - 奇怪的行为,并回答了这篇文章的原始问题。

但是,在 Windows Azure 上是否有替代方案iisreset- 也许以编程方式我可以在其中查明确切的实例?因为那是另一个问题;现在我必须对每个实例使用 RDP .. 如果可以精确定位每个实例,那就太好了。

想想看;我有 www.awesome-azure.com 的 CNAME;这是由 3 个实例以循环方式托管的,我想通过 REST API(类似的)重置/监视/诊断/检测每个实例,而不像现在 - 通过 RDP。

这是否可以实现。

编辑

试图更清楚地说明挑战是什么以及要实现的目标。

编辑 2

iisreset为挑战提供了解决方案;如果可能,更新问题以通过 Internet 查明实例。

4

3 回答 3

4

好吧,我仍然不知道为什么 Microsoft Azure 决定设置World Wide Web Publishing Service为启动模式Manual,但我找到了改变它的方法。

对于原始问题的第二部分,我仍然希望得到答案,但在那之前,请找到我的第一部分的解决方案,以解决iisresetStartup Task 的(IMO)问题:

在我放置在应用程序根目录中的启动文件夹中的startup.cmd(或您所命名的任何名称)中,包含以下文本行:

powershell -ExecutionPolicy Unrestricted .\startup\w3svc.ps1

在同一文件夹中,创建一个名为 w3svc.ps1 的 PowerShell 文件,其内容如下:

Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\W3SVC -Name Start -Value 2

瞧;您的 IIS 现在按预期工作 -World Wide Web Publishing Service现在设置为启动模式Automatically

Note: for the above to work, you need to have your osFamily property set to 2 in you ServiceConfiguration.cscfg file.

于 2012-09-29T11:08:48.040 回答
1

您可以处理 WebRole.cs 中的RoleEnvironment.Changing事件,并将事件参数对象的 Cancel 属性设置为 true。然后,您只需要更改配置设置,Azure 就会以有序的方式重新启动您的所有实例。

于 2012-09-26T09:57:45.367 回答
1

我不知道为什么iisreset不起作用。至于您的第二个问题,您可以使用服务管理 API 重新启动或重新映像实例。这可能会做你想要的。当然,您也可以编写自己的代码来做任何您想做的事情。(您的 Web 角色中可以有代码轮询调用的 blob<instance ID>.txtiisreset在 blob 更改时执行。)

于 2012-09-27T22:27:54.760 回答