.NET class 库作为带有 ServiceBusTopic 触发器的 Azure Function App 不起作用

.NET class library as an Azure Function App with ServiceBusTopic trigger does not work

我在 Visual Studio 2017 年(不是 Azure 门户)按照以下 URL.

中的步骤在本地创建了一个 Azure 函数应用程序

https://blogs.msdn.microsoft.com/appserviceteam/2017/03/16/publishing-a-net-class-library-as-a-function-app

我完全按照步骤创建了一个具有“ServiceBusTopicTrigger”的函数。我将以下内容添加到我的 function.json

{
    “disabled”: false,
    “bindings”: [
        {
            “name”: “mySbMsg”,
            “type”: “serviceBusTrigger”,
            “direction”: “in”,
            “topicName”: “negotiatedaddcharge_test”,
            “subscriptionName”: “clientdispatches”,
            “connection”: “servicebusnac”,
            “accessRights”: “manage”
        }
    ]
}

我的appsenttings.json有以下

{
    “IsEncrypted”: true,
    “Values”: {
        “servicebusnac”: “Endpoint=MyCompanyEndPointPlaceHolder”
    }
}

当我 运行 Visual Studio 中的函数时,我不断收到错误消息“Microsoft.Azure.WebJobs.ServiceBus:Microsoft Azure WebJobs SDK ServiceBus 连接字符串 'AzureWebJobsservicebusnac' 丢失或为空。”

只是为了见鬼,我在值集合中添加了另一个条目,名称为“AzureWebJobsservicebusnac”,但仍然显示相同的消息。我做错了什么吗?

还有你如何对这个函数进行单元测试?我无法访问单元测试项目中 csx 文件中的任何函数。

谢谢。

已编辑: 我添加了信息以明确我是在 Visual Studio 而不是 Azure 门户中创建函数。

Function App 将在环境变量中搜索您的服务总线连接字符串。您可以从 Azure 门户进行设置:

  1. 转到您的函数应用。
  2. Select Platform features 选项卡位于编辑器上方。
  3. 单击 Application settings
  4. App settings 部分下添加一个带有连接名称和字符串的条目。

appsettings.json 文件仅用于支持本地开发,其中定义的设置不会 发布到 Azure。

解决方法很简单;实际上,我 运行 亲自参与其中,这让我完全难住了一段时间。

在您的 appsettings.json 中,将 "IsEncrypted"true 更改为 false。这应该可以解决您遇到的问题。

对于这种情况,错误消息不太理想; Azure Functions 团队已经修复了它的错误。

希望这对遇到此问题的任何人有所帮助。 (我发誓,我花了一个星期才弄明白这个问题,而且并非没有帮助。)