警告发布Azure服务总线队列触发器在local.settings.json中找不到命名值

use*_*050 6 azure visual-studio azureservicebus azure-servicebus-queues azure-functions

我有一个Azure服务总线队列触发器功能,当我创建它时,它问我3个字段,访问权限,连接和队列名称.

我投入了听取访问权限.对于连接,我使用了我创建的服务总线中的"RootManageSharedAccessKey"中给出的"主连接"名称.它看起来像这样

端点= SB://yogaband2017.servicebus.windows.net/; 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}");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我发布该功能时,我得到了这个警告

.nu​​get\packages\microsoft.net.sdk.functions\1.0.2\build \netstandard1.0\Microsoft.NET.Sdk.Functions.Build.targets(31,5):警告:函数[PostEventEmails]:找不到值名为'Endpoint = sb://yogaband2017.servicebus.windows.net/; SharedAccessKeyName = RootManageSharedAccessKey; SharedAccessKey = 0bkbGl1BU ='在local.settings.json中匹配'serviceBusTrigger'上设置的'connection'属性[C:\ Users\Source \工作区\ YogaBand2017\YogaBand2017\PostEventEmails\PostEventEmails.csproj]

在我的网站中,我可以向队列传递一条消息,我在Azure门户网站的队列中看到了该消息,但该功能并未获取消息并对其进行处理.所以我仍然在队列中的活动消息计数中看到"1消息".我假设在函数选择并处理它之后它将为0,我会在窗口中看到日志跟踪?但我不是这样,我认为连接不正确或我没有正确配置,但我不知道是什么!

这是我放入local.settings.json文件的内容

{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=bGl1BU=",
"AzureWebJobsDashboard": ""}}
Run Code Online (Sandbox Code Playgroud)

仅供参考 - 这是我在c#中将消息发送到队列的方式

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

            queueClient.Send(message);
Run Code Online (Sandbox Code Playgroud)

在我的web.config文件中,我添加了这个

<add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://yogaband2017.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=0gwJ90bkbGl1BU="/>
Run Code Online (Sandbox Code Playgroud)

Mik*_*kov 17

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

[ServiceBusTrigger("yogaband2017", AccessRights.Listen, Connection = "MyConn")]
Run Code Online (Sandbox Code Playgroud)

然后,local.settings.json为本地开发环境定义具有此名称的设置:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "... azure storage connection string ...",
    "MyConn": "... service bus connection string ..."
  }
}
Run Code Online (Sandbox Code Playgroud)

并在Azure部署的应用程序设置中.

请注意,这AzureWebJobsStorage不是服务总线连接.