Azure WebJobs SDK ServiceBus 连接字符串 'AzureWebJobsAzureSBConnection' 丢失或为空

Azure WebJobs SDK ServiceBus connection string 'AzureWebJobsAzureSBConnection' is missing or empty

我在 Visual Studio 2015 年创建了一个 Azure Function App。该 App 有一个服务总线队列触发器。当我在本地 运行 时,该应用程序完美运行。它能够从服务总线队列(通过名为 AzureSBConnection 的变量配置)读取数据并将其记录在我的数据库中。

但是在 Azure 中部署时出现以下错误:

Function ($ServiceBusQueueTriggerFunction) Error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.ServiceBusQueueTriggerFunction'. Microsoft.Azure.WebJobs.ServiceBus: Microsoft Azure WebJobs SDK ServiceBus connection string 'AzureWebJobsAzureSBConnection' is missing or empty.

请注意,我的连接名为 AzureSBConnection 而不是 AzureWebJobsAzureSBConnection。此外,连接在本地工作。最后,部署的文件看起来和本地文件一模一样。

Visual Studio 结构如下所示:

function.json文件有一堆设置,如下所示:

然后在 Appsettings.json 文件中,我有以下内容:

为了部署,我将文件通过 FTP 传输到 Azure 中我的 Function App 的 D:\home\site\wwwroot 位置。 Kudu 的最终结构如下:

如果我进入我的函数文件夹:

这是已部署的 function.json:

这是已部署的应用程序设置:

部署的json文件与本地文件完全一样。但是部署的版本由于缺少 AzureWebJobsAzureSBConnection 而出错。我究竟做错了什么?

应用程序设置和连接字符串仅支持 环境变量

您需要确保在门户中的函数应用程序设置中设置了环境变量 AzureWebJobsAzureSBConnection

然后在那里,您需要使用正确的连接字符串添加 AzureWebJobsAzureSBConnection 变量:

然后您可以通过以下代码访问它:

Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);

这将从 appsettings.json 或环境变量中获取值,具体取决于执行函数的位置(本地调试或部署在 Azure 上)

It is able to read the data from the Service Bus queue (configured via a variable named AzureSBConnection) But it gives me the following error when deployed in Azure:

将应用程序部署到 Azure Function 后,应用程序将从环境设置中读取连接字符串。目前,appsettings.json 中的连接设置不会自动更新环境设置。我们可以点击@flyte提到的[Configure app settings]按钮来检查连接字符串是否配置成功。如果没有,您可以在应用设置框中手动添加。

Note that my connection is called AzureSBConnection and not AzureWebJobsAzureSBConnection

请到[集成]页面检查[服务总线连接]是否配置成功。如果没有,您可以通过单击 [new] link.

来重置它