我在VisualStudio2015中创建了一个azure函数应用程序。该应用程序具有服务总线队列的触发器。当我在本地运行应用程序时,它运行得非常好。它能够从服务总线队列(通过名为azuresbconnection的变量配置)读取数据并将其记录到我的数据库中。
但在azure中部署时会出现以下错误:
函数($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文件中,我有以下内容:
为了部署,我将文件ftped到d:\home\site\wwwroot位置,以便在azure中部署我的函数应用程序。Kudu的最终结构如下:
如果我进入我的函数文件夹:
以下是部署的function.json:
以下是部署的应用程序设置:
部署的json文件与本地文件完全相同。但是由于缺少azurewebjobsazuresbconnection,部署的版本出错了。我做错什么了?
2条答案
按热度按时间tez616oj1#
它能够从服务总线队列(通过名为azuresbconnection的变量配置)读取数据,但在azure中部署时会出现以下错误:
将应用程序部署到azure函数后,应用程序将从环境设置中读取连接字符串。当前,appsettings.json中的连接设置不会自动更新环境设置。我们可以点击@flyte提到的[configure app settings]按钮来检查连接字符串是否配置成功。如果没有,您可以在应用程序设置框中手动添加。
请注意,我的连接称为azuresbconnection,而不是azurewebjobsazuresbconnection
请转到[集成]页检查[服务总线连接]是否配置成功。如果没有,您可以通过单击[新建]链接将其重置。
aoyhnmkz2#
应用程序设置和连接字符串只支持环境变量。
您需要确保环境变量
AzureWebJobsAzureSBConnection
在门户中的函数应用程序设置中设置:一旦到了那里,你需要添加
AzureWebJobsAzureSBConnection
具有正确连接字符串的变量:然后您可以通过以下代码访问:
这将从appsettings.json或环境变量中获取值,具体取决于从何处执行函数(本地调试或部署在azure上)