当前位置: 首页 > 知识库问答 >
问题:

警告发布Azure service bus队列触发器在本地中找不到命名值。设置。json

陈开宇
2023-03-14

我有一个Azure service bus队列触发函数,当我创建它时,它问我3个字段:访问权限、连接和队列名称。

我输入了监听权限。对于连接,我使用了在我创建的服务总线中的RootManageSharedAccessKey中给出的主连接名称。它看起来像这样

Endpoint=sb://yogaband2017。服务总线。窗户。净/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=JG0gwJ90bkbGl1BU=

我在我的服务总线中创建了一个名为yogaband的队列,这就是我用作队列名称的第三个参数。

我的功能是这样的

public static class PostEventEmails
{
    [FunctionName("PostEventEmails")]
    public static void Run([ServiceBusTrigger("yogaband2017", AccessRights.Listen, Connection = "Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=gkbGl1BU=")]string myQueueItem, TraceWriter log)
    {
        log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
    }
}

当我发布函数时,我得到了这个警告

.nuget\packages\microsoft。网sdk。函数\1.0.2\build\netstandard1。0\Microsoft。网Sdk。功能。建筑目标(31,5):警告:函数[PostEventEmails]:找不到名为“Endpoint=sb://yogaband2017”的值。服务总线。窗户。净/;SharedAccessKeyName=RootManageSharedAccessKey;本地的SharedAccessKey=0bkbGl1BU='。设置。与“serviceBusTrigger”上设置的“connection”属性匹配的json[C:\Users\Source\Workspace\YogaBand2017\YogaBand2017\PostEventEmails\PostEventEmails.csproj]

在我的站点中,我可以向队列传递消息,并且在Azure门户的队列中看到消息,但是函数没有拾取消息并处理它。所以我仍然在队列中的活动消息计数中看到“1条消息”。我假设它将是0后,函数拿起它并处理它,我会在窗口中看到日志跟踪?但是我不这么认为,所以我认为连接不正确,或者我没有正确配置一些东西,但我不知道是什么!

这是我放在当地报纸上的东西。设置。json文件

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=bGl1BU=",
"AzureWebJobsDashboard": ""}}

仅供参考-以下是我如何将mesage发送到c中的队列#

 var queueClient = QueueClient.Create("yogaband2017");
            BrokeredMessage message = new BrokeredMessage("some test message");
            message.MessageId = newEvent.YogaSpaceEventId.ToString();

            queueClient.Send(message);

在我的web.config里我加了这个

<add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=0gwJ90bkbGl1BU="/>

共有1个答案

邹宏峻
2023-03-14

ServiceBusTriggerConnection属性应设置为设置名称,而不是连接字符串本身:

[ServiceBusTrigger("yogaband2017", AccessRights.Listen, Connection = "MyConn")]

然后在local中定义具有此名称的设置。设置。本地开发环境的json

json prettyprint-override">{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "... azure storage connection string ...",
    "MyConn": "... service bus connection string ..."
  }
}

以及Azure部署的应用程序内设置。

注意AzureWebJobStore不是服务总线连接。

 类似资料:
  • 我们有一个使用NServicebus的本地Web应用程序,我们希望将队列移动到Azure(作为完全基于云的更大迁移路径的一部分)。我正试图建立一个POC,但似乎无法让它工作。 我有以下配置: 在我的应用程序中,我将总线配置为: 当我尝试发布到队列时,我得到以下消息: 我有点不知所措,我尝试了在网上找到的几种不同的示例,但我觉得我对azure知识的缺乏阻碍了我的发展。我从这个问题中提取了大部分配置:

  • 我正在尝试在本地运行一个azure队列触发函数。我安装了Azure Storage Emulator并运行命令“AzureStorageEmulator.exe init”以在“(localdb)\mssqllocaldb”服务器上创建“AzureStorageEmulatorDB59”数据库。 在具有队列触发器函数的azure functions项目中,我有一个local.settings.js

  • 我整天都在想这个问题,但就是不能让我的本地VSCode开发环境用Python worker处理EventHub触发。 Microsoft.Azure.WebJobs.Host:错误索引方法'Functions.myfunctionname'。Microsoft.Azure.WebJobs.EventHubs:值不能为空。参数名称:接收器连接字符串。 函数“Functions.myfunctionn

  • 使用服务总线触发器创建Azure函数并部署在Azure门户中。使用servicebusExplorer,将队列发送到门户并正常工作。但在Azure中停止函数后,将消息从资源管理器发送到Visual Studio中的本地代码进行调试。但它不触发。 我在local.settings.json中给出了服务连接字符串,队列名称正确。从Visual Studio运行函数后,它在azure CLI中抛出错误。

  • 我正在Azure中创建一个函数应用程序,并希望使用队列触发器。我知道如何在设计时配置队列名称,例如: 但是,我希望能够在配置文件中定义和引用它。我知道函数的存在。json(可能是这个),主机。json和本地。设置。json,但我不知道如何在其中设置队列名称并在函数中引用它。 如果我部署在VisualStudio中新创建的函数(使用新的15.3更新),我可以在函数中看到以下内容。部署后的json文件

  • 本文向大家介绍azure-webjobs 队列触发器,包括了azure-webjobs 队列触发器的使用技巧和注意事项,需要的朋友参考一下 示例 一个简单的示例,定义一个由队列消息触发的功能: 它还支持POCO序列化: