.NET类库作为具有ServiceBusTopic触发器的Azure功能应用程序不起作用

时间:2017-05-04 14:31:24

标签: c# azure azure-functions azure-servicebus-topics

我按照以下网址中的步骤在Visual Studio 2017(非Azure门户)中本地创建了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'缺失或为空。”

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

另外,您如何对此功能进行单元测试?我无法访问单元测试项目中csx文件中的任何函数。

感谢。

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

2 个答案:

答案 0 :(得分:3)

Function App将在Environment变量中搜索Service Bus连接字符串。您可以从Azure门户设置:

  1. 转到功能应用程序。
  2. 在编辑器上方选择Platform features标签。
  3. 点击Application settings
  4. App settings部分下添加一个包含连接名称和字符串的条目。
  5. appsettings.json文件仅用于支持本地开发,其中定义的设置已发布到Azure。

答案 1 :(得分:0)

解决方案很简单;我实际上遇到了这个,它让我彻底难受了一段时间。

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

此方案的错误消息不太理想; Azure Functions团队已经有了一个错误修正。

希望这有助于遇到此问题的任何人。 (我发誓,这是我想出来之前一周,而且没有帮助。)