c# - Azure 计划程序 Rest API - 更新作业错误 : Schedules are not supported for recurrence unit 'Hour'

标签 c# rest azure azure-scheduler

我正在使用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"
        }
    }
}

现在,我收到错误:

enter image description here

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

奇怪的是,当更改门户中的重复单位时,他们会自动删除高级计划,而通过 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/

相关文章:

java - 为什么使用 POST 方法的 Java HttpURLConnections 会导致返回 Http 500 错误?

java - 使用 Spring Boot 和 Thymeleaf - 我在将数据从模板到 Controller 传递回模板时遇到问题

sql - 为什么 Azure Databricks 中的时间格式发生变化

c# - Web 开发人员学习 C 语言有什么好处吗?

c# - 将 onclientclick 添加到 gridview 寻呼机

java - 开发 Angular7 REST Web 应用程序时出现 'Access-Control-Allow-Origin' 问题

asp.net-mvc - log4net 无法在 MVC 应用程序中使用 log4net Appender azure 工作

azure - 强制 azure Fabric 使用更新的版本号更新服务

c# - P/从 c# 调用非托管 C++ 代码 - 获取 "tried to access protected memory error"

c# - 在 .NET 中将小时数转换为分钟数