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

C# .NET Core 2.2-无法从Azure AppConfig获取应用程序配置,c#,azure,app-config,app-startup,azure-app-configuration,C#,Azure,App Config,App Startup,Azure App Configuration,我已经创建了一个Azure AppConfiguration存储并获得了访问密钥(端点、Id、机密、ConnectionString) 现在,从我的.NET Core WebAPI应用程序中,我想阅读Azure中的配置。我在网上找到了很多方法,但都不管用 我已经添加了对所需Nuget库的引用。 Myappsettings.json: { "ConnectionString:AppConfig": "Endpoint=https://somewhere.azconfig.io;Id=Hid

我已经创建了一个Azure AppConfiguration存储并获得了访问密钥(端点、Id、机密、ConnectionString)

现在,从我的.NET Core WebAPI应用程序中,我想阅读Azure中的配置。我在网上找到了很多方法,但都不管用

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

{
    "ConnectionString:AppConfig": "Endpoint=https://somewhere.azconfig.io;Id=Hidden;Secret=Hidden",
    "EndPoint": "https://somewhere.azconfig.io"
}
在my
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>();
这就是我读取配置的地方,但是所有的值都是
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

        .....
    }
public void配置服务(IServiceCollection服务)
{
var dbConnection=Configuration.GetSection(“MyApp:Key1:Key2”).Value;-->get null
services.AddDbContext(options=>options.UseSqlServer(dbConnection));
_jwtLifespan=Configuration.GetValue(“MyApp:Key3”);--->get null
_jwtSecretKey=Configuration.GetSection(“MyApp:Key4”).Value;--->get null
.....
}

任何人请检查我这里缺少什么,并建议我一个有效的解决方案。非常感谢

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

从教程:,如果要使用
设置[“ConnectionString:AppConfig”]
,请使用
dotnet用户机密集ConnectionString:AppConfig
将连接字符串添加到机密管理器

注意: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>();
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext,config)=>
{
var builder=new ConfigurationBuilder()
.SetBasePath(环境.CurrentDirectory)
.AddJsonFile(“appsettings.json”,可选:false,reloadOnChange:true)
.AddenEnvironmentVariables();
var Configuration=builder.Build();
var settings=config.Build();
config.AddAzureAppConfiguration(Configuration.GetSection(“ConnectionString:AppConfig”).Value);
})
.UseStartup();
然后我使用教程示例来显示AppConfiguration中的值


希望这能对您有所帮助,如果您还有其他问题,请随时告诉我。

您可以发布appsettings.jsonmy appsettings.json只包含与Azure建立连接的信息,我可以从中获得真正的配置data@LKPhuc Nguyen,有更新吗?你现在可以访问Azure AppConfig吗?嗨,乔治,谢谢你的帮助!在我的
Startup.cs
中,我直接按照您的建议,使用键引用更改访问
config
值的方式,效果很好。
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>();