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

本文关键字:IIS 进程 重新启动 服务器 上的 Azure 运行 | 更新日期: 2023-09-27 18:06:12

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

我尝试了以下方法:

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

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

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

我已经尝试使用icacls (http://technet.microsoft.com/en-us/library/cc753525.aspx)给IIS权限来运行shutdown.exe,但不幸的是,它似乎对system32文件夹内的文件不起作用。

方法2—调用角色环境。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的工作是伟大的,或者如果你能想到另一种选择-这将是非常感激的。

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

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

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

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

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

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