1

我正在使用Azure Scheduler REST API,并且很难将一项作业重复从每周/每月更新为每小时。具体来说,我收到以下错误:重复单元 'Hour' 不支持计划

问题是特定作业曾经有一些高级调度选项,如果我想更新到每小时频率,我当然不需要这些选项。根据MSDN 文档,如果您不包含一个字段(在本例中为“计划”),则当前值将被结转。我试过根本不包括 schedule 字段,包括它的 null 值,包括它的空对象或所有属性(小时、分钟等)设置为 null 并且在所有情况下我都收到带有错误消息的 HTTP Bad Request以上。

这是 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。

任何帮助,将不胜感激。谢谢

4

1 回答 1

0

我一直在尝试重现您的问题,并且发现了以下问题。

我使用以下输入调用 REST API:

{
    "properties": {
        "recurrence": {
            "frequency":"week",
            "schedule":{
               "minutes":[ 0 ],
               "hours":[ 12 ],
               "weekDays":[ "saturday" ]
            }
        }
    }
}

这一步没有问题。在此之后,我在此输入上调用 REST API:

{
    "properties": {
        "recurrence": {
            "frequency":"hour"
        }
    }
}

现在,我得到了错误:

在此处输入图像描述

这是这个问题的原因。您已将计划设置为星期六,这仅对每周计划有意义。

奇怪的是,他们会在门户中更改重复单元时自动删除高级计划,而通过 REST API,他们不会为您执行此操作。我会将此问题报告给 Microsoft。希望他们能在未来的版本中解决这个问题。

这是解决方案。登录新门户,更改一次重复单元,之后,您将能够再次通过 REST API 更新单元。

或者,为您的 REST API 使用“PUT”而不是“PATCH”方法。

对于“PUT”REST API,您需要使用“GET”REST API 中的整个 JSON,但删除“properties”中的“schedule”设置。例如:

{
   "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":{ /*....*/ }
   }
}
于 2016-03-11T01:12:42.513 回答