以编程方式在Azure上重新启动Web / Api-App

时间:2015-10-06 09:39:06

标签: azure azure-web-sites azure-api-apps

如何以编程方式重新启动Azure上的Web应用程序和API应用程序?

(我想在同一个App服务计划中从另一个API-App中调用它。)

3 个答案:

答案 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/

您可以根据自己的需要进行调整。