2017-08-07 80 views
0

創造天藍webjobs我認爲有獲得從本地站點上的某些數據webjobs的服務器。 本地網站的數量可以改變,我的問題是,有沒有辦法根據網站列表創建一個webjobs? 我必須補充說,webjob應該是連續的。動態地從列表

+0

能否請你解釋一下,你越是試圖達到什麼樣的?我的理解是,你想要根據網站部署來僞裝一個webjob? – Thomas

+0

好吧,我會盡力解釋。我有一個網站與webjobs。那些webjob從本地應用程序獲取一些數據,這些應用程序運行在不同的位置。每個本地站點都有自己的webjob。現在,讓我們說,我想添加一個新的本地網站,而不是寫一個新的webjob,我只是想插入到列表中,讓代碼生成webjob(再次上傳網站後)。希望現在更清楚。 –

+0

你的意思是每個本地網站都會生成一個天藍色的webjob? webjob代碼是一樣的嗎?它不需要更改webjob中的任何代碼? –

回答

1

根據你的描述,我建議你可以寫代碼根據Web應用程序的名稱來部署網絡的工作(你可以寫一個循環來部署Web應用程序的webjob)。 (您可以使用Environment.GetEnvironmentVariable(「WEBSITE_SITE_NAME」)來獲取當前Web應用程序的名稱(可以使用Environment.GetEnvironmentVariable(「WEBSITE_SITE_NAME」))。在webjob函數中,可以編寫代碼以根據當前Web應用程序的名稱從sql db或azure存儲區詢問連接字符串)。

關於如何部署的代碼webjob,你可以參考下面的代碼。

注意:首先,你應該建立在Visual Studio Web作業項目。然後,您應該將bin的調試文件夾打包爲一個zip文件。我們會將這個zip文件上傳到azure網絡應用程序。

步驟如何上傳zip文件到Web應用程序。

1.設置部署憑證。

enter image description here

2.Replace與部署憑據網站名稱,用戶名和密碼。

public static void WebApiSample() 
    { 
     string siteName = "yourwebsitename"; 
     String username = "username"; 
     String password = "password"; 
     String encoded = System.Convert.ToBase64String(
     System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)); 

     HttpClient client = new HttpClient(); 
     client.BaseAddress = new Uri($"https://{siteName}.scm.azurewebsites.net/"); 
     client.DefaultRequestHeaders.Add("Authorization", $"Basic {encoded}"); 
     deployJobAsync(client,$"myJob-2", @"path\Debug.zip").Wait(); 

    } 

    private static async Task deployJobAsync(HttpClient client,string jobName, string zipFileName) 
    { 
     using (StreamReader reader = new StreamReader(zipFileName)) 
     { 

      StreamContent streamContent = new StreamContent(reader.BaseStream); 
      var response = await 
      client.PutAsync($"api/zip/site/wwwroot/App_Data/jobs/continuous/{jobName}/", 
      streamContent); 
      var result = await response.Content.ReadAsStringAsync(); 
      if (response.StatusCode == HttpStatusCode.OK) 
       return; 
      else 
       throw new Exception(result); 
     } 
    } 

結果:

enter image description here