2016-10-25 237 views
0

我可以使用Azure管理庫來擴展Azure Web應用程序/ api應用程序嗎?我基本上想要實現擴展和縮小Web應用程序來處理節流。因此,我需要通過C#代碼來擴展Web應用程序和api應用程序。任何指向任何apprpriate庫/ ReST API的指針?Azure網站縮放

隨着下面提到的答案的幫助,我瞭解如何更新APP服務計劃以擴展,但是,我無法爲我的APP服務找到webHostingPlanName。我嘗試了下面的代碼,並且託管計劃總是出現爲空。

 var regionName = "myregion"; 

     var credentials = GetCredentials(); 

     var websiteManagementClient = CloudContext.Clients.CreateWebSiteManagementClient(credentials); 

     var webSpaces = websiteManagementClient.WebSpaces.List(); 
     var webSpace = webSpaces.FirstOrDefault(x => x.GeoRegion == regionName); 
     if (webSpace == null) 
     { 
      throw new Exception(string.Format("No webspace for region {0} found", regionName)); 
     } 

     var webHostingPlans = websiteManagementClient.WebHostingPlans.List(webSpace.Name); 
     var webHostingPlan = webHostingPlans.FirstOrDefault();// this is null always, I know an APP service exists in this region 
+0

的可能的複製[如何擴展Azure雲服務上下從的WebAPI REST API] (HTTP://計算器。com/questions/19197445/how-to-scale-azure-cloud-service-up-and-down-from-rest-api-with-webapi) –

回答

1

是的,我們可以用Microsoft.WindowsAzure.Management.Websites庫擴大和網絡應用程序的下降。 使用方法WebSiteManagementClient.WebHostingPlans.UpdateAsync(webspaceName, webHostingPlanName, webHostingPlanUpdateParameters)來實現它。

我已經做了一個演示來做到這一點。以下是我的詳細步驟:

1.安裝Microsoft.WindowsAzure.Management.WebSites,我們可以從link獲取它。

2.創建WebsiteManagementClient對象

我使用該證書來創建網站圖像客戶端。

  • 安裝VS之後,使用make文件夾下的makecert.exe創建一個證書。

    makecert -sky exchange -r -n "CN=[CertificateName]" -pe -a sha1 -len 2048 -ss My "[CertificateName].cer 
    

enter image description here

  • 上傳。證書文件Azure的門戶網站,然後拿到指紋

enter image description here 3.使用代碼來生成WebsiteManagementClient對象

  public static X509Certificate2 GetCert(string thumbprint) 
    { 

     X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser); 
     certStore.Open(OpenFlags.ReadOnly); 
    X509Certificate2Collection certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false); 
     if (certCollection.Count <= 0) return null; 
     X509Certificate2 cert = certCollection[0]; 
     return cert; 
    } 

var cert = GetCert(string thumbprint) var subscriptionId ="Your subscriptionId" var webSiteManagementClient = new WebSiteManagementClient(new CertificateCloudCredentials(subscriptionId, cert));

4.Construct的WebHostingPlanUpdateParameters

var webHostingPlanUpdateParameters = new WebHostingPlanUpdateParameters 
       { 
        NumberOfWorkers = 1, //the number of the instances 
        SKU = SkuOptions.Standard, 
        WorkerSize = WorkerSizeOptions.Small 
       }; 

5.Update代碼爲

client.WebHostingPlans.UpdateAsync(webspaceName, webHostingPlanName, webHostingPlanUpdateParameters); 

注意WebHostingPlans:如果您嘗試運行在Azure項目。請參閱文檔Using Certificates in Azure Websites Applications添加一個應用程序的設置,其值設置爲證書的指紋命名WEBSITE_LOAD_CERTIFICATES將使你的web應用可訪問

+0

擴展也是可能的嗎?還是隻能放大和縮小? – Purbasha

+0

@Purbasha它可以用於擴展和擴展。 SKU和WorkerSize用於擴展.NumberOfWorkers用於擴展。但SKU沒有價值溢價。如果想通過Premium定價層來擴展App服務計劃。嘗試在預覽中使用[新庫](https://www.nuget.org/packages/Microsoft.Azure.Management.WebSites)。 –

+0

我無法爲我的APP服務找到webHostingPlanName。我嘗試了下面的代碼,並且主機方案總是空出來 – Purbasha