我已经为一些 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 设置而不是主应用程序设置。