函数的侦听器无法启动。为什么?

viv*_*una 10 c# azure .net-core azure-functions

当我从 Visual Studio 运行 azure 函数时出现以下错误。

发生 ScriptHost 错误 [1/19/2018 6:40:52 AM] 函数“MyFunctionName”的侦听器无法启动。Microsoft.WindowsAzure.Storage:服务器遇到内部错误。请过一段时间再试。

当我通过运行func host start命令从命令提示符运行时。我收到以下警告。然后它被卡住了

实例ID获取的主机锁租约

.

没有找到工作职能。尝试公开您的作业类和方法。如果您使用绑定扩展(例如 ServiceBus、Timers 等),请确保您已在启动代码(例如 config.UseServiceBus()、config.UseTimers() 等)中调用了扩展的注册方法.)

Azure 函数版本:azure-functions-core-tools@2.0.1-beta.22 我正在使用存储帐户 Blob 容器和队列。

我正在连接到开发存储帐户,我已经检查它是否已启动存储模拟器

{
  "IsEncrypted": false,
  "Values": {
    "ConnectionStrings:Default": "Server=.\\SQLEXPRESS; Database=TestDb; Trusted_Connection=True;",
    "ConnectionStrings:BlobStorageAccount": "UseDevelopmentStorage=true",

    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
  }
}
Run Code Online (Sandbox Code Playgroud)

供参考。

以前工作正常,但我在 Visual Studio 中收到了这条消息。

您的许可证已经过时,必须更新。检查更新的许可证以继续使用此产品

所以我只是删除了%localappdata%%temp%,然后我尝试运行 Azure 函数,在此之后,我开始得到

函数的侦听器无法启动错误

那么它与我的 Visual Studio 订阅有关还是我错误地删除了任何必需的文件?或者这与其他事情有关?

Tah*_*lvi 18

如果您在本地通过存储模拟器运行,则运行 func settings add AzureWebJobsStorage UseDevelopmentStorage=true inlocal.settings.json

如果使用 func 具有正常的 Azure 存储连接字符串,则必须在local.settings.json.
最终的 JSON 如下所示:

{
  // some variables
  "Values": {
    // some variables
    "AzureWebJobsStorage": "UseDevelopmentStorage=true"
  },
}
Run Code Online (Sandbox Code Playgroud)

查看更多

  • 文件名必须是“local.settings.json”。设置必须是复数。 (2认同)

jlo*_*ail 7

我刚刚目睹了这一点。此链接https://github.com/Azure/azure-functions-core-tools/issues/357表示本地存储模拟器可能未运行。我停止了调试。转到 Cloud Explorer 并打开本地节点以查看 blob 内容。这必须已启动本地存储模拟器。当我再次点击运行时,Azure Functions Tools 启动了。

  • azure-webjobs-hosts 中的计时器已损坏。删除条目后已修复。 (4认同)

小智 7

我通过执行以下步骤解决了该问题: 打开一个新终端并输入“azurite”。程序将打开并保持窗口打开。打开 Visual Studio 并尝试再次运行该函数。瞧啦。


Ric*_*chS 6

对于遇到此问题的任何人,以下内容可能会有所帮助...

Azure Durable Functions 依赖于 TableStorage,而最新版本的 Azurite (v3) 目前不支持 TableStorage。因此,拉动 Azurite 存储库并切换到legacy-master(v2) 分支,然后运行npm run start.

  • 要跟踪 TableStorage 的 v3 支持,请参阅此问题:https://github.com/Azure/Azurite/issues/614。您可以安装 alpha 版本“npm install -g azurite@alpha”(不过未经测试)。 (2认同)
  • 执行持久函数效果很好(使用 Azurite),但“常规函数”无法启动(就像它试图访问 Azure 存储模拟器而不是 Azurite)解决方案将“local.settings.json”中的“AzureWebJobsStorage”更改为真实的本地连接字符串 `AccountName=devstoreaccount1;AccountKey=*****;DefaultEndpointsProtocol=http;BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1; TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;` 在任何情况下都会强制使用 Azurite。 (2认同)

Dar*_*der 6

对我来说,出现此错误是因为我没有安装并运行存储模拟器。您可以从以下链接将存储模拟器安装为 VS Code 插件。安装后,转到 VS Code 命令面板并运行Azurite: Start Blob Service. 然后在本地运行您的函数。它会工作得很好。

https://marketplace.visualstudio.com/items?itemName=Azurite.azurite