如何从Azure上运行的IIS进程重新启动服务器?

时间:2014-06-01 16:47:30

标签: c# iis azure iis-7

我们正在Azure上运行WCF服务,我们希望能够从代码重新启动计算机。

我尝试了以下方法:

方法1 - 使用Process.Start(“shutdown.exe”)

http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process.start

此方法存在问题 - IIS 7具有应用程序池的安全性,并且手动更改Azure上的权限/等重置并且无法信任。

我尝试使用icaclshttp://technet.microsoft.com/en-us/library/cc753525.aspx)授予IIS运行shutdown.exe的权限,但不幸的是,它似乎无法对system32内的文件起作用文件夹中。

方法2 - 调用RoleEnvironment.RequestRecycle

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.serviceruntime.roleenvironment.requestrecycle.aspx

我们已经使用过这个功能,它运行良好 - 但是我们需要重启服务器而不仅仅是角色实例回收。

方法3 - 使用Azure的REST API

http://msdn.microsoft.com/en-us/library/azure/gg441298.aspx

到目前为止,这是实现这一目标的最有希望的方法,我能够通过生成证书,在Azure门户上将其作为管理证书上传,从我的开发机器开始工作,但是,对于我的生活我无法从Azure实例本身获得管理证书。


所以 - 如果有人能够想出一种方法来使方法1或3的工作很棒,或者如果你能想到另一种选择 - 那将非常感激。

2 个答案:

答案 0 :(得分:0)

另一种选择是使用Azure Powershell cmdlet(http://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/)。

然后,您可以运行Restart-AzureVMhttp://msdn.microsoft.com/en-us/library/dn495199.aspx)+许多其他管理命令

答案 1 :(得分:0)

我最终使用方法3(使用Azure的管理库),并且我在发布设置文件中使用了base64编码的管理证书(可在此处https://windows.azure.com/download/publishprofile.aspx下载)。

里面有我的订阅附加的管理证书的base64字符串。

不是最漂亮的解决方案,但它确实有效。