C# 如何从Azure上运行的IIS进程重新启动服务器?
我们正在Azure上运行WCF服务,希望能够从代码重新启动机器 我尝试了以下方法: 方法1-使用Process.Start(“shutdown.exe”) 此方法存在问题-IIS 7具有应用程序池的安全性,并且在Azure上手动更改权限/etc会重置并且无法信任 我尝试使用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 我们已经使用了这个功能,
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字符串
虽然不是最漂亮的解决方案,但它很有效。本教程应包含您需要的所有内容: