我有一个问题,我想在部署新版本时停用appservice的webjobs,并在部署后再激活它们。
c#有可能这样做吗?
感谢你们
答案 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。