使用C#代码更改Azure Webjobs计划
我想更改链接到应用程序服务的Azure webjobs计划。我能够找到的一种方法是使用,但这需要API调用和凭据管理 有没有其他方法可以使用C#代码,通过更改一些环境设置来做到这一点 有没有其他方法可以使用C#代码,通过更改一些环境设置来做到这一点 如果不想通过调用KuDu API更改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
设置.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才能实现。