0

是否可以在 configuration.build 之前从 appsettings.json 读取值?

我需要获取端点、clientId、secret 和租户以将配置与 azure 应用配置绑定

Configuration = builder.AddAzureAppConfiguration(options =>
           {
              //here i need to get some values from appsettings.json

           }).Build()
4

3 回答 3

1

我不确定这一点,因为我通常使用 WebHostBuilder,但我认为它应该是这样的:

var settings = builder.Build();
Configuration = builder.AddAzureAppConfiguration(options =>
{
    options.Connect(settings["ConnectionStrings:AppConfig"])
}).Build();

编辑:注意我假设您已经将 appsettings.json 添加到构建器中。如果没有,您需要添加

var env = [something like]hostingContext.HostingEnvironment;

config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
      .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
于 2021-03-26T08:03:35.473 回答
1

您可以ConfigurationBuilder这样使用:

var builder = new ConfigurationBuilder()
                    .SetBasePath("yourJsonPath")
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
var config = builder.Build();

然后你可以检索你需要的值:

config.GetSection("AppConfig:Endpoint").Value

要不就

 config.GetSection("ClientId").Value

取决于您的 JSON 是如何构建的。

于 2021-03-26T16:49:46.897 回答
0

这是不可能的。

以下是 Azure 应用程序配置 GitHub 示例中与您的场景类似的两个示例:

控制台应用程序

https://github.com/Azure/AppConfiguration-DotnetProvider/blob/e227b0b454370751c2ddbebb143fd6e02a07c47b/examples/ConsoleApplication/Program.cs#L36

该示例显示,ConfigurationBuilder构建它是为了获取中间体 IConfiguration,然后使用该中间体提供连接字符串,以将 Azure 应用程序配置添加到构建器。

ASP.NET Core Web 应用程序

https://github.com/Azure/AppConfiguration-DotnetProvider/blob/e227b0b454370751c2ddbebb143fd6e02a07c47b/examples/ConfigStoreDemo/Program.cs#L26

在 ASP.NET Core Web 应用程序示例中,相同的模式与提供的框架一起使用IConfigurationBuilder

于 2021-03-26T16:16:21.977 回答