【问题标题】:In Azure function V1, how can I retrieve settings.json Values using ConfigurationManager?在 Azure 函数 V1 中,如何使用 ConfigurationManager 检索 settings.json 值?
【发布时间】:2021-12-03 15:17:44
【问题描述】:

我的一个客户想要将旧的 .NET Framework 4.5.2 控制台应用迁移到 Azure 函数。

遗憾的是,此控制台应用程序引用了在 .NET Framework 4.5.2 中开发的类库,他们不想将其迁移到 .Net Core 或以任何方式对其进行修改。因此,该功能将在 V1 中,这是 .NET Framework 唯一支持的版本。

问题在于,在内部,类库使用旧的ConfigurationManager 类来检索设置。为了测试我是否可以使用该库,我在 Azure 函数 V1 项目中添加了对 System.Configuration 的引用,并尝试从 local.settings.json 中检索值:

ConfigurationManager.AppSettings["Key"]

但这会返回 null。

我知道在 Azure 函数中检索设置的正确方法是:

Environment.GetEnvironmentVariable("Key")

但是,正如我之前所说,我坚持使用旧的 .NET Framework 库,我需要一种使用 ConfigurationManager.AppSettingslocal.settings.json 获取值的方法。有可能吗?

【问题讨论】:

标签: azure azure-functions configurationmanager .net-framework-4.8


【解决方案1】:

从 Azure Function v2 开始,我们使用 ConfigurationBuilder 而不是 ConfigurationManager。但是 Azure Functions v1 使用 ConfigurationManager 来访问应用程序设置或环境变量。因此,使用 ConfigurationManager 是 Azure Function v1 的唯一选择。

下面的示例显示了获取值的正确方法 -

...
var myclientId = System.Configuration.ConfigurationManager.AppSettings["ClientId"]; 
var myclientSecret = System.Configuration.ConfigurationManager.AppSettings["ClientSecret"];
...

ConfigurationManager 是获取所需设置的好方法。它公开了 AppSettings,它只是一个 NameValueCollection——通过一个键(或“名称”),您可以返回一个字符串类型的值。

还要确保您的 local.settings.json 如下所示 -

{
   "IsEncrypted":false,
   "Values" : {
      "MyUrl" : "www.google.com",
      ...
   }
   ...
}

查看discussion 了解更多信息。请注意,如果您仍在 v1 中,GetEnvironmentVariable 无法获取 ConnectStrings,因为它们未导入环境,只有 Values 可用。

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2019-05-22
    • 2014-10-20
    相关资源
    最近更新 更多