【问题标题】:Azure Timer Function - Microsoft.WindowsAzure.Storage: Settings must be of the form "name=value"Azure 计时器功能 - Microsoft.WindowsAzure.Storage:设置必须采用“名称=值”的形式
【发布时间】:2020-03-23 19:29:29
【问题描述】:

我能够创建 http 触发函数并执行它们没有问题,但是当我创建一个计时器函数时,我收到以下错误:

The listener for function 'Functions.CheckForWinnersOnTimer' was unable to start. Microsoft.WindowsAzure.Storage: Settings must be of the form "name=value".

这是在我创建函数时没有更改模板代码。

module.exports = async function (context, myTimer) {
    var timeStamp = new Date().toISOString();

    if (myTimer.IsPastDue)
    {
        context.log('JavaScript is running late!');
    }
    context.log('JavaScript timer trigger function ran!', timeStamp);   
};

这是为什么呢?感谢您的帮助!

【问题讨论】:

  • 问题与 Microsoft.WindowsAzure.Storage 包有关,与时间触发器无关。如果没有看到您的设置,我们将无法提供帮助
  • 你在local.settings.json中设置AzureWebJobsStorage 了吗?
  • 代码没有问题。 local.settings.json的设置应该有问题。

标签: node.js azure azure-functions


【解决方案1】:

这个错误是你所面临的。

鉴于您的代码没有任何问题,我认为问题应该是由local.settings.json引起的。注意 AzureWebJobsStorage 值的格式。

如果您使用的是本地虚拟存储模拟器,则应填写 UseDevelopmentStorage=true。如果你选择 Azure 上的存储帐户,那么你应该去这里复制值并填写 AzureWebJobsStorage:

使用本地存储模拟器的 local.settings.json 示例:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "node"
  }
}

【讨论】:

  • 这就是问题所在。谢谢
  • 感谢您的洞察力...真的帮助我了解发生了什么。我创建了一个运行良好的基本函数,但是当我将它转换为计时器时,我遇到了你正在解释的错误。我认为发生了什么是'普通'函数不需要任何存储,所以问题不会出现。但是计时器需要存储在一个 blob(甚至可能是一个队列?)中,因此您需要存储才能工作。那就是你被错误击中的时候。我发现这在运行开发环境时很有用:github.com/azure/azurite
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 2019-02-27
  • 2019-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多