首页 > 解决方案 > 如何将 Azure 应用配置与 .Net Framework 4.7.1 MVC 应用一起使用

问题描述

我想在 .Net Framework MVC Web 应用程序中使用 Azure 应用程序配置存储。我添加了对 Microsoft.Extensions.Configuration.* 程序集的引用。目标是调用 ConfigurationManager.AppSettings["key"] 的现有代码应该继续工作,并在可用时从 Azure 中检索值。

我在 web.config 中注册了一个新的 configBuilder,如下所示:

<add name="MyConfigStore" mode="Greedy" connectionString="xxx" type="Microsoft.Configuration.ConfigurationBuilders.AzureAppConfigurationBuilder, Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration" />

这在运行时有效。但是,在应用程序初始化期间、在 Startup.cs 或 Global.asax 中或在构建我的 DI 容器时,找不到 Azure 配置值。Azure configBuilder 似乎尚未注册。如果我从 Azure 显式检索值,它就可以工作。如果我只是调用 ConfigurationManager.AppSettings,它不起作用。

IConfigurationRoot configuration = new ConfigurationBuilder()
    .AddAzureAppConfiguration(options =>
    {
        options.Connect(ConfigurationManager.AppSettings["AzureConfigConnString"])
            .UseFeatureFlags();
    }).Build();

//THIS WORKS
var someValue = configuration["key"];

//THIS DOES NOT WORK
someValue = ConfigurationManager.AppSettings["key"];

如何注册 Azure configBuilder 以便在启动期间使用它?所有示例似乎都是针对 .Net Core 的,它们使用了我的项目中不存在的 CreateHostBuilder()。

标签: azure.net-4.0azure-app-configuration

解决方案


回答我自己的问题。问题是我需要参考:

Microsoft.Configuration.ConfigurationBuilders.AzureAppConfiguration

不是

Microsoft.Extensions.Configuration.AzureAppConfiguration。

我还需要 web.config 中 AppSettings 节点上的 configBuilders 属性。在此之后,启动代码就不需要了。


推荐阅读