local.settings.json 中的 Azure 函数连接字符串错误 - .NET 8 独立工作线程模型

问题描述 投票:0回答:1

我正在将 Azure 函数应用程序从 .NET 6 移植到 .NET 8。这要求我转向隔离工人模型。效果很好。但是,我无法让使用

ConnectionString
的函数绑定在不将连接字符串本地存储在
local.settings.json
中的情况下很好地发挥作用。

以前在 .NET 6 中,我们会:

  1. 将我们的连接字符串存储在天蓝色的密钥库中
  2. Startup.cs
    ConfigureAppConfiguration
    期间,检查是否在开发环境中运行
  3. 如果在开发中运行,请连接到我们的 azure 密钥保管库并使用
    SecretClient
  4. 中的机密构建配置
  5. 现在我们可以在本地访问敏感的连接字符串,而无需将它们存储在源代码管理中。因此,我们的
    local.settings.json
    仅使用
    <secret>
    作为连接字符串值:,然后秘密客户端负责将实际值分层在顶部。
  6. 我们的函数
    Run
    定义如下所示:

该函数将拾取连接字符串,一切都会完美地工作。


现在,在 .NET 8 隔离工作模型中,它不再起作用。似乎在启动时,应用程序对 local.settings.json 中的

实际连接字符串值
以外的任何内容都不满意:

如果我只是将实际的连接字符串插入

local.settings.json
(其中
<secret>
),一切正常。但尝试使用我们的旧方法是行不通的。这里在.NET 8的
Program.cs
中重现:

有谁知道我应该如何在.NET 8隔离工作模型中本地提供秘密连接字符串?提前感谢您的帮助。

azure-functions .net-8.0 azure-functions-isolated dotnet-isolated
1个回答
0
投票

现在,在 .NET 8 隔离工作模型中,它不再起作用。

.Net 8 不支持启动类,因为它处于隔离的工作环境中。它在 InProcess 中工作,而不是在isolated 中工作。

如果连接字符串位于 keyVault 中作为替代方案,您可以使用以下方式从 .net 8 中的 keyvault 获取连接字符串:

local.settings.json:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "rithcon":"@Microsoft.KeyVault(SecretUri=https://rithkey1.vault.azure.net/secrets/testsecret/)"

  }
}

以下是使用 keyvault 连接字符串的方法:

@Microsoft.KeyVault(SecretUri=https://keyvaultname.vault.azure.net/secrets/secretname/)

Output:

enter image description here

因此,通过使用上述方式,不需要启动等等。

© www.soinside.com 2019 - 2024. All rights reserved.