使用C#代码更改Azure Webjobs计划

使用C#代码更改Azure Webjobs计划,azure,azure-web-app-service,azure-webjobs,Azure,Azure Web App Service,Azure Webjobs,我想更改链接到应用程序服务的Azure webjobs计划。我能够找到的一种方法是使用,但这需要API调用和凭据管理 有没有其他方法可以使用C#代码,通过更改一些环境设置来做到这一点 有没有其他方法可以使用C#代码,通过更改一些环境设置来做到这一点 如果不想通过调用KuDu API更改Azure webjobs计划,可以尝试修改设置.job以更新计划 string userName = "$xxxxxxxxx"; string userPassword = "xxxxxxxxxxxxxxxxxx

我想更改链接到应用程序服务的Azure webjobs计划。我能够找到的一种方法是使用,但这需要API调用和凭据管理

有没有其他方法可以使用C#代码,通过更改一些环境设置来做到这一点

有没有其他方法可以使用C#代码,通过更改一些环境设置来做到这一点

如果不想通过调用KuDu API更改Azure webjobs计划,可以尝试修改
设置.job
以更新计划

string userName = "$xxxxxxxxx";
string userPassword = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
string webAppName = "xxxxxxxxxxxxx";
var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{userName}:{userPassword}"));
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth);
    var baseUrl = new Uri($"https://{webAppName}.scm.azurewebsites.net/");
    var requestURl = baseUrl + "/api/triggeredwebjobs/{your_job_name}/settings";
    string body = "{\"schedule\": \"0 */2 * * * *\"}";
    var stringContent = new StringContent(body, Encoding.UTF8, "application/json");
    var response = client.PutAsync(requestURl, stringContent).Result;
}
以下是每分钟运行一次的示例计划:

{
  "schedule": "0 * * * * *"
}
在Visual Studio中

·在WebJob控制台应用程序的根目录下添加
设置.job
文件。
·在文件属性下,将
Copy to Output Directory
设置为
Copy if newer
Copy always

·然后,当您部署webjob时,它将被部署并按计划执行。 对于完整的样本,您可以参考此

在库都

settings.job
文件必须位于WebJob文件夹的根目录下,与WebJob脚本一起,例如在
wwwroot\app\u data\jobs\triggered\{job name}

有关更多详细信息,请参阅此

调用KUDU API

WebJob API需要
基本身份验证
使用,您可以在azure portal中访问您的webapp,单击
获取发布配置文件
,然后下载以获取
用户名
用户密码

参考以下代码,您可以重置计划

string userName = "$xxxxxxxxx";
string userPassword = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
string webAppName = "xxxxxxxxxxxxx";
var base64Auth = Convert.ToBase64String(Encoding.Default.GetBytes($"{userName}:{userPassword}"));
using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + base64Auth);
    var baseUrl = new Uri($"https://{webAppName}.scm.azurewebsites.net/");
    var requestURl = baseUrl + "/api/triggeredwebjobs/{your_job_name}/settings";
    string body = "{\"schedule\": \"0 */2 * * * *\"}";
    var stringContent = new StringContent(body, Encoding.UTF8, "application/json");
    var response = client.PutAsync(requestURl, stringContent).Result;
}

您的意思是为触发的作业设置计划吗?:谢谢你的回复。但是,如果我们必须在运行时更改计划,那么这种解决方案是不可行的。这将需要更改文件并再次部署应用程序服务。如果要在运行时更改计划,必须调用KuDu API才能实现。