簡體   English   中英

.NET Core 2.2 - 無法從 Azure AppConfig 獲取應用程序配置

[英].NET Core 2.2 - Unable to get app configuration from Azure AppConfig

我創建了一個 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

        .....
    }

任何人都請檢查我在這里缺少的內容並建議我一個可行的解決方案。 非常感謝!

假設這是您的連接設置問題。 從您的代碼中,您使用settings["ConnectionStrings:AppConfig"]獲取連接字符串,但是您使用的是appsettings.json

從教程: 連接到應用程序配置商店,如果您想使用settings["ConnectionStrings:AppConfig"] ,請使用dotnet user-secrets set ConnectionStrings:AppConfig <your_connection_string>將您的連接字符串添加到 Secret Manager。

注意: Secret manager 僅用於本地測試,當應用部署到 Azure 應用服務時,請使用應用服務中的應用程序設置連接字符串。

如果你想使用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 中的值。

在此處輸入圖像描述

在此處輸入圖像描述

希望這可以幫助你,如果你還有其他問題,請隨時讓我知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM