繁体   English   中英

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

[英]The listener for function was unable to start. Why?

从 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 容器和队列。

我正在连接到Development Storage account ,我已经检查过存储模拟器已启动。

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

    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
  }
}

供参考。

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

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

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

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

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

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

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

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

如果使用 func 使用普通 Azure 存储连接字符串,则必须在local.settings.json设置 AzureWebJobsStorage

更多 观点

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

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

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

我正在使用 VS-2022。 使用以下步骤解决了此问题。

  1. 使用以下命令在本地计算机中运行 Azurite

    azurite --silent --location c:\azurite --debug c:\azurite\debug.log

  2. 在 local.settings.json 中,使用以下代码:

    “价值观”:{

    “AzureWebJobsStorage”:“UseDevelopmentStorage=true”}

  3. (可选),启动模拟器并检查没有报错

而已!

我在 Azure 函数中使用ServiceBusTrigger时遇到了这个问题。

在此处输入图片说明

在我的 Visual Studio 解决方案中,我有两个Azure Functions并且我为我的两个 Functions 使用了相同的Subscription Name ,其中一个功能是将数据发送到 Azure 服务总线,另一个是接收数据。

发送

private const string _topicName = "factfinder_topic";
private const string _subscriptionName = "subs1";
private static ITopicClient _topicClient;
private static ILogger _logger;
[FunctionName("SendDataToSubscription")]
public static void Run([ServiceBusTrigger(_topicName, _subscriptionName, Connection = "ServiceBusConnectionString")] string mySbMsg, ILogger log) {
    _logger = log;
    PrepareSend().GetAwaiter().GetResult();
    _logger.LogInformation($ "C# ServiceBus topic trigger function processed message: {mySbMsg}");
}

接受

private const string _topicName = "factfinder_topic";
private const string _subscriptionName = "subs1";
[FunctionName("FetchDataFromSubscription")]
public static void Run([ServiceBusTrigger(_topicName, _subscriptionName, Connection = "ServiceBusConnectionString")] string mySbMsg, ILogger log) {
    log.LogInformation($ "C# ServiceBus topic trigger function processed message: {mySbMsg}");
}

正如您所看到的,在这两种情况下_subscriptionName的值都是subs1 ,这是错误的,因此在FetchDataFromSubscription函数中将其更改为我的其他订阅名称( subs2 ) 后,问题已解决。

我也遇到了同样的问题。 退出 Visual Studio 并再次打开它解决了我的问题。

我通过在 local.settings.json 文件中设置UseDevelopmentStorage=false解决了这个问题。

{
“IsEncrypted”:假,
“价值观”:{
"FUNCTIONS_WORKER_RUNTIME": "蟒蛇",
"AzureWebJobsStorage": "UseDevelopmentStorage=false"
}
}

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

对于遇到此类问题的任何人,请查看此链接

清理 azure 存储本地容器后,它为我解决了这个问题。

对于在本地运行持久函数时遇到此错误的任何其他人,我发现处理它的最简单方法是使用 VSCode 扩展“持久函数监视器”。 我发现这是持久功能的绝佳资源; 使用扩展我删除了 Azurite 存储中的集线器,这很快。 任何先前执行的所有数据都与此错误一起被删除。

我也有这个问题,花了很多时间。 修复不是来自我,但我希望 onwer 可以接受它作为解决方案,它过去花了我很多时间,它可以帮助其他人。

对我来说唯一有效的修复程序写在上面的评论中:

azure-webjobs-hosts 中的计时器已损坏。 删除条目后已修复。 – Marcel Gelijk 2021 年 3 月 5 日 9:59

在我的情况下,如果您使用计时器触发器并对其进行许多更改,复制或将时间触发器切换到 http 触发器并返回,则可能会发生这种情况。 如果你为测试做一些事情,它可能会损害 azure-webjobs-hosts 中的冲突条目。

所以我删除了 locks 和 timers 文件夹中的所有条目。 在启动计时器 azure 功能时,所有条目都将更新并且有效

非常感谢 Marcel Gelijk。

[ 删除这 2 个文件夹中的所有条目1

在我的例子中,我删除了 %localappdata% 和 %temp% 文件夹中的所有内容,然后重新开始。

通过关注此博客解决。

https://markgossa.com/2018/12/azure-function-listener-for-function.html

"%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" init "%programfiles(x86)%\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe" 启动

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

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

当我从命令提示符运行func host start命令来运行func host start 我收到以下警告。 然后卡在

通过实例ID获取主机锁租约

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

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

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

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

    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
  }
}

供参考。

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

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

所以我只删除了%localappdata%%temp% ,然后尝试运行Azure函数,然后,我开始获取

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

那么这与我的Visual Studio订阅有关还是我误删除了任何必需的文件? 还是这与别的东西有关?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM