【问题标题】:Azure WebJobs SDK ServiceBus connection string 'AzureWebJobsAzureSBConnection' is missing or emptyAzure WebJobs SDK ServiceBus 连接字符串“AzureWebJobsAzureSBConnection”缺失或为空
【发布时间】:2017-03-23 23:30:31
【问题描述】:

我在 Visual Studio 2015 中创建了一个 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 文件中,我有以下内容:

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

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

这里是部署的function.json:

这是部署的应用设置:

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

【问题讨论】:

  • 应该用一个较长的矩形覆盖密码 - 以覆盖它很短的事实。

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


【解决方案1】:

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

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

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

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

Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process);

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

【讨论】:

  • 谢谢@flyte。该代码在您建议的更改后工作。
  • @flyte 你能告诉我在哪里使用 Environment.GetEnvironmentVariable(name, EnvironmentVariableTarget.Process); ?我完成了上述步骤,但不确定在哪里使用它。
  • 我在 host.json 中这样做,但它似乎不起作用 { "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "AzureWebJobsAzureSBConnection": "connectionString" } }
【解决方案2】:

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

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

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

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

【讨论】:

  • 感谢 Amor - MSFT 的回复。 @Flyte 的回应对我有用。也就是说,当我单击“集成”时,我看不到您显示的屏幕。相反,我看到了一个用于修改 function.json 文件的编辑器。标题为 Config。
猜你喜欢
  • 2021-11-20
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
相关资源
最近更新 更多