2015-10-06 70 views
2

如何以編程方式在Azure上重新啓動Web應用程序和API應用程序?以編程方式重新啓動Azure上的Web/Api-App

(我想相同的應用程序服務計劃之內從另一個API的應用程序調用它。)

+0

爲什麼你需要重新啓動它們? –

+0

重新創建DocumentDB集合後,存儲庫的某些靜態成員不再有效。所以在這種情況下(不是每天使用),它似乎是最簡單的方法。 –

+0

你是否檢查過powershell/cli apis?他們應該有一個重新啓動或停止/啓動api。最糟糕的情況下,你可以殺死網站上的w3wp進程:) –

回答

1

還有「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

相關問題