【问题标题】:Azure queue trigger error using .Net.Sdk.Functions 3.0.13: Error indexing method 'Function1',Storage: No valid combination of account info found使用 .Net.Sdk.Functions 3.0.13 的 Azure 队列触发错误:错误索引方法“Function1”,存储:找不到有效的帐户信息组合
【发布时间】:2021-10-22 04:43:25
【问题描述】:

即使在阅读了许多关于此错误的帖子后,我也无法运行新的服务总线队列触发器。我还没有向解决方案添加任何逻辑,只是试图让生成的 shell 正确运行。它是在 Core 3.1 中构建的,使用 VS2019 中的 QueueTrigger 模板。 此触发器位于另一个 Azure 函数的解决方案中,但它不是队列触发器(它是 Kafka 主题触发器)。我将队列触发器设置为启动项目。

尽管尝试了许多更改来解决此问题,但我仍然遇到这些错误:

Microsoft.Azure.WebJobs.Host: 
Error indexing method 'Function1'. 
Microsoft.WindowsAzure.Storage: No valid combination of account information found.

我首先尝试使用开发存储(“AzureWebJobsStorage”:“UseDevelopmentStorage=true”,),然后创建了一个实际的存储帐户。都没有奏效。当我尝试运行触发器时,我看到存储模拟器启动。

我阅读了这个问题,但不清楚与 blob 存储相关的我需要做什么(如果有的话): Queue trigger needs blob storage

已安装的软件包:

Microsoft.NET.Sdk.Functions (3.0.13)
Azure.Messaging.ServiceBus (7.2.1)
Microsoft.Azure.WebJobs.Exetensions.Storage (3.0.10)  
Microsoft.Azure.WebJobs.Extensions.ServiceBus (4.3.0)

这是触发器的签名:

public static class Function1
{
    [FunctionName("Function1")]
    public static void Run([QueueTrigger("queueNameHere", Connection = "AzureWebJobsServiceBus")]string myQueueItem, ILogger log) {

这是我的 local.settings.json 文件。注意,我删除了“EndpointSuffix=core.windows.net/;”后缀,因为许多帖子说这是一个修复。我的两个键值都以“=”结尾是可以的,对吗?

{
  "Values": {
    "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true",
    "AzureWebJobsServiceBus": "Endpoint=sb://MySvcBusNamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXX"
  },
  "IsEncrypted": false
}

host.json 文件:

{
  "version": "2.0"
}

我在 host.json 中尝试过,但已将其删除:

  "extensions": {
    "serviceBus": {
      "prefetchCount": 100,
      "messageHandlerOptions": {
        "autoComplete": true,
        "maxConcurrentCalls": 32,
        "maxAutoRenewDuration": "00:05:00"
      },
      "sessionHandlerOptions": {
        "autoComplete": false,
        "messageWaitTimeout": "00:00:30",
        "maxAutoRenewDuration": "00:55:00",
        "maxConcurrentSessions": 16
      },
      "batchOptions": {
        "maxMessageCount": 1000,
        "operationTimeout": "00:01:00",
        "autoComplete": true
      }
    }
  }

【问题讨论】:

    标签: azure azureservicebus azure-servicebus-queues azure-triggers queuetrigger


    【解决方案1】:

    问题是您正在使用存储队列触发器绑定public static void Run([QueueTrigger("queueNameHere" 您需要改用 ServiceBusTrigger,请参见下面的示例 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-service-bus-trigger?tabs=csharp#example

    也可能与Microsoft.WindowsAzure.Storage: No valid combination of account information found - Tried to edit conn string, but did not work重复

    【讨论】:

    • 谢谢!就是这样。现在,对于奖励积分,谁能告诉我为什么我需要做出这个改变?我认为项目模板有充分的理由设置队列触发器。是因为我安装的包吗?
    • 上面链接的问题中提到了这个答案,但在这种情况下并不明显。这不是那个 Java 人的问题的答案。希望这对其他人有所帮助。
    • 您使用的项目模板是用于存储级别队列的,与服务总线的不同,因此在设置新项目时只需选择服务总线队列触发器模板,只需将其截图添加到回答
    • @daver:一旦有机会,请务必将 Jose 的答案标记为已接受,因为它解决了您最初的问题。这将帮助有类似问题的其他人看到这个问题在未来已经得到解决,并且还将奖励 Jose 的贡献。
    猜你喜欢
    • 2012-12-04
    • 2021-01-18
    • 2018-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多