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

C# 如何从Azure上运行的IIS进程重新启动服务器?,c#,iis,azure,iis-7,C#,Iis,Azure,Iis 7,我们正在Azure上运行WCF服务,希望能够从代码重新启动机器 我尝试了以下方法: 方法1-使用Process.Start(“shutdown.exe”) 此方法存在问题-IIS 7具有应用程序池的安全性,并且在Azure上手动更改权限/etc会重置并且无法信任 我尝试使用icacls()授予IIS运行shutdown.exe的权限,但不幸的是,它似乎无法在system32文件夹中的文件上运行 方法2-调用RoleEnvironment.RequestRecycle 我们已经使用了这个功能,

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

我尝试了以下方法:

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

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

我尝试使用
icacls
()授予IIS运行
shutdown.exe
的权限,但不幸的是,它似乎无法在
system32
文件夹中的文件上运行

方法2-调用RoleEnvironment.RequestRecycle

我们已经使用了这个功能,它工作得很好-但是我们需要完全重新启动服务器,而不仅仅是角色实例回收

方法3-使用Azure的REST API

到目前为止,这看起来是实现这一点的最有希望的方法,我能够通过生成证书,将其作为管理证书上传到Azure门户上,从我的开发机器上实现这一点,但是,就我的一生而言,我无法从Azure实例本身获得管理证书



因此-如果有人能想出一种方法使方法1或3发挥作用,或者如果你能想出另一种选择,我们将不胜感激。

另一种选择是使用Azure Powershell cmdlet()

然后,您可以运行
Restart AzureVM
()+许多其他管理命令我最终使用了方法3(使用Azure的管理库),并且在发布设置文件中使用了base64编码的管理证书(可以在此处下载)

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


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

本教程应包含您需要的所有内容: