如何以编程方式重新启动Azure上的Web应用程序和API应用程序?
(我想在同一个App服务计划中从另一个API-App中调用它。)
答案 0 :(得分:2)
还有" Microsoft Azure Management Libraries" Nuget,允许您从应用程序内部使用Azure服务。
有关如何从Azure网站内部创建新网站的示例,请参阅this page。重新启动Web服务的工作方式与创建新服务的方式类似。有关可用网站相关方法的列表,请参阅this page。
此外,对于使用证书基本身份验证的身份验证,有关详细信息,请参阅this page。
Bellow是一个简短的命令行程序,它将重新启动您在Azure订阅中获得的所有网站空间中的所有网站。它有点像Azure网站的iisreset。
该代码基于前面提到的链接中的样本:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.Management.WebSites;
using Microsoft.WindowsAzure;
using System.Security.Cryptography.X509Certificates;
using Microsoft.WindowsAzure.Management.WebSites.Models;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var subscriptionId = "[INSERT_YOUR_SUBSCRIPTION_ID_HERE]";
var cred = new CertificateCloudCredentials(subscriptionId, GetCertificate());
var client = new WebSiteManagementClient(cred);
WebSpacesListResponse webspaces = client.WebSpaces.List();
webspaces.Select(p =>
{
Console.WriteLine("Processing webspace {0}", p.Name);
WebSpacesListWebSitesResponse websitesInWebspace = client.WebSpaces.ListWebSites(p.Name,
new WebSiteListParameters()
{
});
websitesInWebspace.Select(o =>
{
Console.Write(" - Restarting {0} ... ", o.Name);
OperationResponse operation = client.WebSites.Restart(p.Name, o.Name);
Console.WriteLine(operation.StatusCode.ToString());
return o;
}).ToArray();
return p;
}).ToArray();
if(System.Diagnostics.Debugger.IsAttached)
{
Console.WriteLine("Press anykey to exit");
Console.Read();
}
}
private static X509Certificate2 GetCertificate()
{
string certPath = Environment.CurrentDirectory + "\\" + "[NAME_OF_PFX_CERTIFICATE]";
var x509Cert = new X509Certificate2(certPath,"[PASSWORD_FOR_PFX_CERTIFICATE]");
return x509Cert;
}
}
}
另一种选择,如果您无法从上述库中找到所需的功能,您还可以从应用程序内部以编程方式运行powershell命令。您很可能需要将应该运行这些cmdlet的应用程序移动到虚拟机以便能够加载所需的PowerShell模块。有关以编程方式运行powershell cmdlet的详细信息,请参阅this page。
答案 1 :(得分:1)
您可以使用Powershell执行此操作。相关命令是:
Start-AzureWebsite -Name“xxxx”
Stop-AzureWebsite -Name“xxxx”
您可以通过以下链接找到有关这些命令的帮助: https://msdn.microsoft.com/en-us/library/azure/dn495288.aspx https://msdn.microsoft.com/en-us/library/azure/dn495185.aspx
答案 2 :(得分:0)
我认为处理基础REST API是更好的选择。 Azure SDK发生了很大变化,缺乏良好的文档。
这是一个最新的示例代码: https://github.com/davidebbo/AzureWebsitesSamples/
您可以根据自己的需要进行调整。