【发布时间】:2021-12-10 23:24:36
【问题描述】:
我已经为一些 Web 应用程序调用创建了一个触发 Web 作业,但我有一个要求,即触发作业客户应该能够在需要时启动或停止,并且还可以安排。
我已经使用 webjobs rest API 完成了计划部分,但我无法完成启动和停止工作,因为触发器作业没有任何选项。
有没有办法启动和停止触发 webjob。我曾尝试使用 kudo kill 进程,但 webjob 触发器完成后它不会出现在进程资源管理器中。
var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{azureUserName}:{azurePassword}"));
if (string.Equals(jobStatus, "STOP", StringComparison.InvariantCultureIgnoreCase))
{
using(var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth);
//var baseUrl = new Uri($"https://{webAppName}.scm.azurewebsites.net/");
var requestURl = string.Format("{0}/api/processes", azureWebAppUrl);
var response = client.GetAsync(requestURl).Result;
if (response.IsSuccessStatusCode == true)
{
string res = response.Content.ReadAsStringAsync().Result;
var processes = JsonConvert.DeserializeObject < List < ProcessData >> (res);
if (processes.Any(x => x.name.Contains(azureWebJobName)))
{
requestURl = string.Format("{0}/api/processes/{1}", azureWebAppUrl, processes.Where(x => x.name.Contains(azureWebJobName)).FirstOrDefault().id);
response = client.DeleteAsync(requestURl).Result;
}
returnStr = "success";
}
else
{
returnStr = response.Content.ToString();
}
}
}
请帮助我了解停止和启动触发 Web 作业流程的更好方法。我还发现我们可以将应用程序设置添加到主应用程序,如 WEBJOBS_STOPPED 和 WEBJOBS_DISABLE_SCHEDULE 但这将取决于并且需要每次更新它,我想依赖 webjob 设置完全代替主应用程序设置。
【问题讨论】:
-
问题我不清楚!!!此链接可能对您有所帮助.. stackoverflow.com/questions/31064071/…
-
我认为您是在谈论 Azure 中的 WebJob,对吧?在这种情况下,这个可能会有所帮助:stackoverflow.com/questions/26636995/…
-
嗨维克多,我的网络作业是计划作业,因此我无法通过 kudo api 杀死它来停止它,就像我上面提到的代码一样。有没有其他方法可以使用 power shell 命令或任何 azure 服务来停止我的 web 作业,我可以停止吗
标签: c# azure-webjobs-triggered