在C#中停用并激活Azure WebJobs

时间:2017-02-16 10:39:11

标签: c# azure azure-web-sites web-deployment azure-webjobs

我有一个问题,我想在部署新版本时停用appservice的webjobs,并在部署后再激活它们。

c#有可能这样做吗?

感谢你们

2 个答案:

答案 0 :(得分:2)

要从外部客户端停止WebJob,您只需要进行REST调用:https://github.com/projectkudu/kudu/wiki/WebJobs-API#stop-a-continuous-job

 POST https://{sitename}.scm.azurewebsites.net/api/continuouswebjobs/{job name}/stop

将添加disabled.job文件

再次启动WebJob

   POST https://{sitename}.scm.azurewebsites.net/api/continuouswebjobs/{job name}/start

将删除已禁用的作业文件,webjob将再次运行

答案 1 :(得分:1)

据我所知,您无法直接停止触发的WebJob,您需要利用进程资源管理器通过KUDU将其终止。对于连续的WebJobs,您可以利用WebJobs API来启动/停止WebJobs,您需要使用您的Web应用程序的Deployment credentials使用基本身份验证来调用特定的Rest API。以下是停止WebJob的c#代码段:

string username = "{username}";
string password = "{password}";
string jobname = "{your-webjob-name}";
string authorization = Convert.ToBase64String(System.Text.UTF8Encoding.UTF8.GetBytes($"{username}:{password}"));
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authorization);
    var res = await client.PostAsync($"https://{your-webapp-name}.scm.azurewebsites.net/api/continuouswebjobs/{jobname}/stop", null);
    Console.WriteLine($"StatusCode:{res.StatusCode}");
}

注意:此时,您的WebJob将添加名为disable.job的文件,如下所示:

要启动WebJob,只需调用/api/continuouswebjobs/{job name}/start,然后将删除disable.job文件并再次运行WebJob。