更改Azure中从Visual Studio发布的Azure函数的计时器间隔

更改Azure中从Visual Studio发布的Azure函数的计时器间隔,azure,timer,azure-functions,Azure,Timer,Azure Functions,我有一个具有以下代码的函数应用程序 public static void Run([TimerTrigger("*/5 * * * * *")]TimerInfo myTimer, TraceWriter log) 这将每5秒执行一次我的函数。在生产中,我希望间隔为30秒。在我将函数发布到Azure之后,它可以正常工作,并且每5秒运行一次 在函数设置的Integrate-页面顶部,有一条消息“您的应用程序当前处于只读模式,因为您已发布生成的Function.json。函数运行时将不接受对Fun

我有一个具有以下代码的函数应用程序

public static void Run([TimerTrigger("*/5 * * * * *")]TimerInfo myTimer, TraceWriter log)
这将每5秒执行一次我的函数。在生产中,我希望间隔为30秒。在我将函数发布到Azure之后,它可以正常工作,并且每5秒运行一次

在函数设置的Integrate-页面顶部,有一条消息“您的应用程序当前处于只读模式,因为您已发布生成的Function.json。函数运行时将不接受对Function.json所做的更改”,并且该页面变灰


那么,在开发和生产中,如何为计时器功能制定不同的时间表呢?

让您的时间表可配置。在代码中这样声明:

[TimerTrigger(“%schedule%”)

然后添加名为
schedule
的开发设置和值为
*/5****/code>的生产设置,以及值为
*/30****/code>

的生产设置。这应总结此处给出的其他答案:

配置本地设置

  • 将文件添加到项目中
  • 插入以下代码:
  • 将触发器属性设置为
[TimerTrigger(“%schedule%”)
配置Azure

  • 转到并转到功能,单击您的功能并选择应用程序设置
  • 在应用程序设置中,选择添加新设置
  • 输入
    schedule
    作为键,输入
    */30*****
    作为值
  • 单击左上角的
    保存
  • 重新部署您的功能

这很有效。为了澄清,应将设置放在值设置“值”:{“AzureWebJobsStorage”:“xxx”,“AzureWebJobsDashboard”:“schedule”:“*/5*****”}我不确定将此“值”设置放在何处。我可以在“应用程序设置”中将其作为环境变量公开吗?是否有正式的文档记录?编辑:找到了。
{
  "Values": { 
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=XXXXXXXXXX;AccountKey=XXXXXXXXXX", 
    "AzureWebJobsDashboard": "DefaultEndpointsProtocol=https;AccountName=XXXXXXXXXX;AccountKey=XXXXXXXXXX", 
    "schedule": "*/5 * * * * *",
    "//": "put additional settings in here"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*"
  },
  "ConnectionStrings": {
    "SQLConnectionString": "XXXXXXXXXX"
  }
}