[英]Web Role on Windows Azure and iisreset side effects
我注意到,当您RDP到Windows Azure上的Web角色实例进行iisreset
, World Wide Web Publishing Service
将关闭,并且重新启动并重新运行角色的唯一方法是重新启动上述服务或重新启动滚动/重启您的实例。
由于我不知道的原因,Windows Azure将World Wide Web Publishing Service
的启动模式默认设置为Manual
,为什么iisreset
排序会使Web角色对WWW不可用。
我找到了解决这个问题的方法-IMO-奇怪的行为,并回答了本文的原始问题。
但是,在Windows Azure上是否有iisreset
的替代方法-也许可以通过编程来确定确切的实例? 因为那是另一个问题; 现在我必须对每个实例使用RDP ..如果可以对每个实例进行精确定位,那就太好了。
考虑一下; 我有一个CNAME到www.awesome-azure.com; 它由3个实例轮流托管,我想通过REST API(类似)重置/监视/诊断/心跳,而不是像现在这样-通过RDP。
可以实现吗?
编辑
试图更清楚地说明挑战是什么以及要实现的目标。
编辑2
为iisreset
挑战提供了解决方案; 更新了问题,以便在可能的情况下通过Internet定位实例。
好吧,我仍然不知道为什么Microsoft Azure决定将World Wide Web Publishing Service
为启动方式Manual
,但是我找到了一种更改方式。
对于原始问题的第二部分,我仍然希望得到答案,但是在此之前,请找到第一部分的解决方案,以使用启动任务修复(IMO) iisreset
问题:
在我放置在应用程序根目录下的启动文件夹中的startup.cmd (或您命名的文件)中,包括以下文本行:
powershell -ExecutionPolicy不受限制。\\ startup \\ w3svc.ps1
在同一文件夹中,创建一个名为w3svc.ps1的PowerShell文件,其内容如下:
Set-ItemProperty -Path HKLM:\\ SYSTEM \\ CurrentControlSet \\ Services \\ W3SVC-名称开始-值2
瞧! 您的IIS现在可以正常工作- World Wide Web Publishing Service
现在设置为Automatically
启动模式。
注意: 要使上述方法起作用,您需要在ServiceConfiguration.cscfg文件中将osFamily属性设置为2 。
您可以在WebRole.cs中处理RoleEnvironment.Changing事件,并将事件参数对象的Cancel属性设置为true。 然后,您只需要更改配置设置,Azure就会以有序的方式重新启动所有实例。
我不知道为什么iisreset
无法正常工作。 关于第二个问题,您可以使用服务管理API重新启动或重新镜像实例。 那可能会做您想要的。 当然,您也可以编写自己的代码以执行所需的任何操作。 (您可以在Web角色中使用代码来轮询名为<instance ID>.txt
的Blob,并在Blob更改时进行iisreset
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.