プログラムで Azure 上の Web アプリと API アプリを再起動するにはどうすればよいですか?
(同じ App Service プラン内の別の API-App から呼び出したい。)
プログラムで Azure 上の Web アプリと API アプリを再起動するにはどうすればよいですか?
(同じ App Service プラン内の別の API-App から呼び出したい。)
また、アプリケーション内から 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 コマンドレットをプログラムで実行する方法の詳細については、このページを参照してください。
これを行うには、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