。NET Core 2.2-无法从Azure AppConfig获取应用程序配置

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

我已经创建了一个Azure AppConfiguration存储并获取访问键(EndPoint,Id,Secret,ConnectionString)。

现在从我的.NET Core WebAPI应用程序中,我想从Azure中读取配置。我尝试了很多在网上找到的方法,但是都没有用。

我已经添加了对必需的Nuget库的引用。我的appsettings.json

{
    "ConnectionString:AppConfig": "Endpoint=https://somewhere.azconfig.io;Id=Hidden;Secret=Hidden",
    "EndPoint": "https://somewhere.azconfig.io"
}

在我的Program.cs中,我有:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {
        var settings = config.Build();

        config.AddAzureAppConfiguration(options =>
        {
            options.Connect(settings["ConnectionStrings:AppConfig"]);
        });
    })
    .UseStartup<Startup>();

然后在我的Startup.cs构造函数中:

public Startup(
    IConfiguration configuration, ---> checked this but no Azure config data
    IHostingEnvironment hostingEnv
)
    {
        var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

        //this.Config = configuration;
        var builder = new ConfigurationBuilder()
                    .SetBasePath(hostingEnv.ContentRootPath)
                    .AddJsonFile(...)
                    .AddEnvironmentVariables();

        Configuration = builder.Build();
    }

这是我读取配置的地方,但是所有值都是null

public void ConfigureServices(IServiceCollection services)
    {
        var dbConnection = Configuration.GetSection("MyApp:Key1:Key2").Value; ---> get null
        services.AddDbContext<MyDbContext>(options => options.UseSqlServer(dbConnection));

        _jwtLifespan = Configuration.GetValue<int>("MyApp:Key3"); ----> get null
        _jwtSecretKey = Configuration.GetSection("MyApp:Key4").Value; ----> get null

        .....
    }

[任何人,请检查我在这里缺少的内容,并为我提供有效的解决方案。非常感谢!

c# azure app-config app-startup azure-app-configuration
1个回答
0
投票

假设是您的连接设置问题。从您的代码中,您正在使用settings["ConnectionStrings:AppConfig"]获取连接字符串,但是您正在使用appsettings.json

来自教程:Connect to an app configuration store,如果要使用settings["ConnectionStrings:AppConfig"],请使用dotnet user-secrets set ConnectionStrings:AppConfig <your_connection_string>将连接字符串添加到Secret Manager。

[注意:秘密管理器仅用于本地测试,将应用程序部署到Azure App Service时,请使用应用程序在App Service中设置连接字符串。

如果要使用appsettings.json,则可以尝试以下代码。

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
    .ConfigureAppConfiguration((hostingContext, config) =>
    {

        var builder = new ConfigurationBuilder()

            .SetBasePath(Environment.CurrentDirectory)

            .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)

            .AddEnvironmentVariables();

        var Configuration = builder.Build();
        var settings = config.Build();
        config.AddAzureAppConfiguration(Configuration.GetSection("ConnectionStrings:AppConfig").Value);
    })
    .UseStartup<Startup>();

然后,我使用教程示例在AppConfiguration中显示值。

enter image description here

enter image description here

希望这可以为您提供帮助,如果您还有其他问题,请随时告诉我。

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