我正在使用Azure Scheduler REST API,并且我很难将一个作业重复周期从每周/每月更新为每小时。具体来说,我收到以下错误:重复单位“小时”不支持计划。
问题是,特定的作业曾经有一些高级的调度选项,如果我想更新到每小时的频率,我当然不需要这些选项。根据MSDN Documentation如果您不包含任何字段(在本例中为“计划”),则当前值将被保留。我尝试过完全不包含计划字段,将其包含为 null 值,将其包含为空对象或将所有属性(小时、分钟等)设置为 null,并且在所有情况下我都会收到带有错误消息的 HTTP 错误请求如上所述。
这是 get 操作返回的我的工作:
{
"id":"************",
"type":"Microsoft.Scheduler/jobCollections/jobs",
"name":"my-job-collection/my-job-id",
"properties":{
"startTime":"2016-03-01T00:00:00Z",
"action":{ /*....*/ },
"recurrence":{
"frequency":"week",
"interval":4,
"schedule":{
"minutes":[ 0 ],
"hours":[ 12 ],
"weekDays":[ "saturday" ]
}
},
"state":"enabled",
"status":{ /*....*/ }
}
这是我尝试提交的补丁:
{
"properties":{
"recurrence":{
"frequency":"hour"
}
}
}
/* or */
{
"properties":{
"recurrence":{
"frequency":"hour",
"schedule": null
}
}
}
我使用的API版本是2016-01-01。
如有任何帮助,我们将不胜感激。谢谢
最佳答案
我一直在尝试重现您的问题,并发现了以下问题。
我使用以下输入调用 REST API:
{
"properties": {
"recurrence": {
"frequency":"week",
"schedule":{
"minutes":[ 0 ],
"hours":[ 12 ],
"weekDays":[ "saturday" ]
}
}
}
}
这一步没有问题。之后,我对此输入调用 REST API:
{
"properties": {
"recurrence": {
"frequency":"hour"
}
}
}
现在,我收到错误:
这是这个问题的原因。您已将日程设置为周六,仅对每周日程有意义。
奇怪的是,当更改门户中的重复单位时,他们会自动删除高级计划,而通过 REST API,他们不会为您执行此操作。我会将这个问题报告给微软。希望他们能在未来的版本中解决这个问题。
这是解决方案。登录新门户,更改一次重复单位,之后您就可以再次通过 REST API 更新单位。
或者,对 REST API 使用“PUT”而不是“PATCH”方法。
对于“PUT”REST API,您需要使用“GET”REST API 中的整个 JSON,但删除“属性”中的“计划”设置。例如:
{
"id":"************",
"type":"Microsoft.Scheduler/jobCollections/jobs",
"name":"my-job-collection/my-job-id",
"properties":{
"startTime":"2016-03-01T00:00:00Z",
"action":{ /*....*/ },
"recurrence":{
"frequency":"hour",
"interval":4
},
"state":"enabled",
"status":{ /*....*/ }
}
}
关于c# - Azure 计划程序 Rest API - 更新作业错误 : Schedules are not supported for recurrence unit 'Hour' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35862438/