【问题标题】:How to start and stop schedule webjob using asp .net c#如何使用asp .net c#启动和停止计划webjob
【发布时间】: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_STOPPEDWEBJOBS_DISABLE_SCHEDULE 但这将取决于并且需要每次更新它,我想依赖 webjob 设置完全代替主应用程序设置。

【问题讨论】:

  • 问题我不清楚!!!此链接可能对您有所帮助.. stackoverflow.com/questions/31064071/…
  • 我认为您是在谈论 Azure 中的 WebJob,对吧?在这种情况下,这个可能会有所帮助:stackoverflow.com/questions/26636995/…
  • 嗨维克多,我的网络作业是计划作业,因此我无法通过 kudo api 杀死它来停止它,就像我上面提到的代码一样。有没有其他方法可以使用 power shell 命令或任何 azure 服务来停止我的 web 作业,我可以停止吗

标签: c# azure-webjobs-triggered


【解决方案1】:

我不知道我是否理解你的问题。

我认为,您可以使用 Quartz(1) 启动作业/作业并通过应用程序设置对其进行安排。

https://www.quartz-scheduler.net/

【讨论】:

  • 嗨 Sajad,我的问题是从通过 kudu api 尝试的 c# 代码停止调度 web 作业以供参考,请参阅我上面的代码,但由于调度 web 作业进程没有进入进程资源管理器。是否有任何其他选项可用于停止计划网络作业
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多