前回の記事である Windows Azure SDK for .NET の Management Library を利用して Webサイト を動的に作成してみる で疎通までの簡単な手順とWebサイトの作成までを紹介したが、今回は Web サイトの設定情報を更新する方法を紹介する。
サンプルコードを実行する
ダラダラと文章を書いても仕方ないので、以下に試したコードと実行結果を記載する。作成済みの Web サイトの情報を取得する際に、GetAync() メソッドと GetConfigurationAsync() メソッドで取得できる情報が異なる点に注意が必要だ*1。
- サンプルコード
using Microsoft.WindowsAzure; using Microsoft.WindowsAzure.Management; using Microsoft.WindowsAzure.Management.WebSites.Models; using System; using System.Collections.Generic; using System.Security.Cryptography.X509Certificates; using System.Threading; namespace AzureManagementConsoleApp { public class Program { static void Main() { ChangeWebSiteStatus(); Console.ReadLine(); } public static async void ChangeWebSiteStatus() { const string webSiteName = "createfromcode"; const string webSpaceName = "eastasiawebspace"; var cert = new X509Certificate2(@"Assets\ManagementTestCert.pfx", "<パスワード>"); var credentials = new CertificateCloudCredentials("<サブスクリプションID>", cert); using (var client = CloudContext.Clients.CreateWebSiteManagementClient(credentials)) { // まず Web サイトの状態を取得 { var parameters = new WebSiteGetParameters(); //以下を試したけど取れなかった。これなんだろ? //{ // PropertiesToInclude = new string[] { "WebSocketsEnabled", "PhpVersion" } //}; var response = await client.WebSites.GetAsync(webSpaceName, webSiteName, parameters, CancellationToken.None); Console.WriteLine("変更前, {0} のサイトモード = {1} ", webSiteName, response.WebSite.SiteMode); //以下二つは取れない(key がないので例外が出る) //Console.WriteLine("変更前, {0} のWebScoketモード = {1} ", webSiteName, response.WebSite.SiteProperties.AppSettings["WebSocketsEnabled"]); //Console.WriteLine("変更前, {0} のPHPバージョン = {1} ", webSiteName, response.WebSite.SiteProperties.AppSettings["PhpVersion"]); } // Web サイトの構成情報を取るのはこっち { var response = await client.WebSites.GetConfigurationAsync(webSpaceName, webSiteName, CancellationToken.None); Console.WriteLine("変更前, {0} のWebScoketモード = {1} ", webSiteName, response.WebSocketsEnabled); Console.WriteLine("変更前, {0} のPHPバージョン = {1} ", webSiteName, response.PhpVersion); } // 構成を更新 { // PHP バージョンを 5.4-> 5.5, WebSocket を Enabled -> Disabled へ var parameters = new WebSiteUpdateConfigurationParameters { PhpVersion = "5.5", WebSocketsEnabled = false }; var updateConfigurationResponse = await client.WebSites.UpdateConfigurationAsync(webSpaceName, webSiteName, parameters, CancellationToken.None); //こっちには WebSite プロパティがない Console.WriteLine("RequestId = {0}, StatusCode= {1} ", updateConfigurationResponse.RequestId, updateConfigurationResponse.StatusCode); } // Web サイトの状態を 無料 -> 共有 へ変更 { var parameters = new WebSiteUpdateParameters { SiteMode = WebSiteMode.Basic, }; var response = await client.WebSites.UpdateAsync(webSpaceName, webSiteName, parameters, CancellationToken.None); Console.WriteLine("変更後, {0} のサイトモード = {1} ", webSiteName, response.WebSite.SiteMode); } // もっかい Web サイトの構成情報を取る { var response = await client.WebSites.GetConfigurationAsync(webSpaceName, webSiteName, CancellationToken.None); Console.WriteLine("変更前, {0} のWebScoketモード = {1} ", webSiteName, response.WebSocketsEnabled); Console.WriteLine("変更前, {0} のPHPバージョン = {1} ", webSiteName, response.PhpVersion); } } } } }
- 実行結果
変更前, createfromcode のサイトモード = Limited 変更前, createfromcode のWebScoketモード = True 変更前, createfromcode のPHPバージョン = 5.4 RequestId = a4f9803ff1a75c2db950db5d938b1ec6, StatusCode= OK 変更後, createfromcode のサイトモード = Basic 変更前, createfromcode のWebScoketモード = False 変更前, createfromcode のPHPバージョン = 5.5
*1:この辺はパケットキャプチャで確認したいところ