功能运行时无法以服务总线触发器上的“声明为空”错误启动

时间:2018-01-19 02:06:38

标签: azure-functions azureservicebus

我设置了几个主题来处理当前正在开发的系统的新功能应用程序,每次尝试启动时都会出现故障错误。

  

函数运行时无法启动。请检查       运行时记录任何错误或稍后再试。       Microsoft.ServiceBus:远程服务器返回错误:       (401)未经授权。声称是空的。 TrackingId:b221222c-       df39-4abb-8af7-8afd880fd363_G8,SystemTracker:giftie-       production.servicebus.windows.net:out-smtp,       时间戳:1/19/2018 1:52:12 AM。系统:遥控器       服务器返回错误:(401)未经授权。       会议ID:547e23d54eca44fcb2503bf88d8cb05e       时间戳:2018-01-19T01:52:31.245Z

我已经检查了所有共享访问策略,这发生在两个主题的每个订阅上。我有一个单独的功能应用程序,从不同的主题运行,似乎工作正常。 我尝试删除并重新创建访问策略(并更新AppSettings中的连接字符串)并删除并重新创建订阅。

我认为function.json看起来还不错 - 这是一个示例:

{
  "bindings": [
    {
      "type": "serviceBusTrigger",
      "connection": "SB-out-smtp-listener",
      "topicName": "out-smtp",
      "subscriptionName": "smtp-sendgrid",
      "access": "manage",
      "direction": "in",
      "name": "jsonMessage"
    }
  ],
  "disabled": false,
  "scriptFile": "..\\bin\\notifications.hellogiftie.com.dll",
  "entryPoint": "notifications.hellogiftie.com.ApiServiceBus.SbSmtpSendgrid.Run"
}

我现在很困惑,对任何想法都会感激不尽!

2 个答案:

答案 0 :(得分:1)

我设法通过完全重新生成我的函数应用程序项目,并将所有内容放回其中,删除Azure上的函数应用程序以及重新发布来解决此问题。 即便如此,我在ServiceBusTrigger属性中放置的内容与Integrate屏幕上显示的内容之间也存在不匹配(尽管function.json看起来正确)。 我在属性中有Listen权限,但出现了有关管理权限的错误。整合屏幕说我要求管理权限,在纠正之后,一切都开始起作用了。

我想可能有一些关于ServiceBusTrigger属性的有趣内容:

collection.find({ $or : [{"name" : {"$regex" : "foo_.*" }}, 
   {"name" : {"$regex" : "bar_.*" }}] })

Intellisense似乎告诉我,有一个功能签名选项,它有2个访问权限参数,但描述了一个"客户端对主题"中的订阅的访问权限。和另一个"获取客户端对队列或主题订阅的访问权限"。

答案 1 :(得分:0)

默认情况下,ServiceBusTrigger属性上的访问权限设置为“Manage”。 Here's源代码,如果你想进一步深入挖掘!