2017-08-07 52 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