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

时间:2017-03-23 23:30:32

标签: azure connection azure-webjobs azure-functions kudu

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

但是在Azure中部署时,它会给我以下错误:

  

Function($ ServiceBusQueueTriggerFunction)错误:Microsoft.Azure.WebJobs.Host:错误索引方法'Functions.ServiceBusQueueTriggerFunction'。 Microsoft.Azure.WebJobs.ServiceBus:Microsoft Azure WebJobs SDK ServiceBus连接字符串'AzureWebJobsAzureSBConnection'缺失或为空。

请注意,我的连接称为AzureSBConnection,而不是AzureWebJobsAzureSBConnection。此外,连接在本地工作。最后,部署的文件看起来与本地文件完全相同。

Visual Studio结构如下所示:

Visual Studio Structure

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

FUnction.json

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

App Settings

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

wwwroot

如果我进入我的功能文件夹:

enter image description here

这是部署的function.json:

Deployed Function.json

以下是部署的appsettings:

Deployed app settings

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

2 个答案:

答案 0 :(得分:9)

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

您需要确保在门户网站的功能应用设置中设置了环境变量AzureWebJobsAzureSBConnection

function app

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

enter image description here

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

Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);

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

答案 1 :(得分:1)

  

它能够从Service Bus队列中读取数据(通过名为AzureSBConnection的变量配置)但是在Azure中部署时会出现以下错误:

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

  

请注意,我的连接称为AzureSBConnection而不是AzureWebJobsAzureSBConnection

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

enter image description here