我在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结构如下所示:
function.json文件有一堆设置,如下所示:
然后在Appsettings.json文件中,我有以下内容:
为了部署,我将文件FTP到了Azure的Function App的D:\ home \ site \ wwwroot位置。 Kudu的最终结构如下:
如果我进入我的功能文件夹:
这是部署的function.json:
以下是部署的appsettings:
部署的json文件与本地文件完全相同。但由于缺少AzureWebJobsAzureSBConnection,部署的版本出错了。我究竟做错了什么?
答案 0 :(得分:9)
应用设置和连接字符串仅支持环境变量。
您需要确保在门户网站的功能应用设置中设置了环境变量AzureWebJobsAzureSBConnection
:
然后在那里,您需要使用正确的连接字符串添加AzureWebJobsAzureSBConnection
变量:
然后您可以通过以下代码访问此代码:
Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);
这将从appsettings.json或环境变量中获取值,具体取决于执行函数的位置,(本地调试或在Azure上部署)
答案 1 :(得分:1)
它能够从Service Bus队列中读取数据(通过名为AzureSBConnection的变量配置)但是在Azure中部署时会出现以下错误:
将应用程序部署到Azure Function后,您的应用程序将从环境设置中读取连接字符串。目前,appsettings.json中的连接设置不会自动更新环境设置。我们可以单击[配置应用程序设置]按钮,如提及@fly,检查连接字符串是否配置成功。如果没有,您可以在应用程序设置框中手动添加它。
请注意,我的连接称为AzureSBConnection而不是AzureWebJobsAzureSBConnection
请转到[集成]页面,检查[服务总线连接]是否配置成功。如果没有,您可以通过单击[新]链接重置它。