3

プログラムで Azure 上の Web アプリと API アプリを再起動するにはどうすればよいですか?

(同じ App Service プラン内の別の API-App から呼び出したい。)

4

3 に答える 3

2

また、アプリケーション内から Azure サービスを操作できるようにする " Microsoft Azure Management Libraries " Nuget もあります。

Azure Web サイト内から新しい Web サイトを作成する方法の例については、このページを参照してください。Web サービスの再起動は、新しいサービスの作成と同様に機能します。使用可能な Web サイト関連のメソッドのリストについては、このページを参照してください。

また、認証には証明書ベースの認証が使用されます。詳細については、このページを参照してください。

以下は、Azure サブスクリプションで取得したすべての Web スペース内のすべての Web サイトを再起動する短いコマンド ライン プログラムです。これは、Azure Web サイトの 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 コマンドを実行することもできます。ほとんどの場合、これらのコマンドレットを実行するアプリケーションを仮想マシンに移動して、必要な PowerShell モジュールをロードできるようにする必要があります。PowerShell コマンドレットをプログラムで実行する方法の詳細については、このページを参照してください。

于 2015-10-06T20:47:02.843 に答える
1

これを行うには、Powershell を使用できます。関連するコマンドは次のとおりです。

Start-AzureWebsite -名前「xxxx」</p>

Stop-AzureWebsite -名前「xxxx」</p>

これらのコマンドのヘルプは、次のリンクにあります。 https://msdn.microsoft.com/en-us/library/azure/dn495288.aspx https://msdn.microsoft.com/en-us/library/azure /dn495185.aspx

于 2015-10-06T20:33:22.227 に答える