首页 > 解决方案 > C# Api 如何读取 appsettings.json?

问题描述

我想知道文件是如何startup.cs知道的appsettings.json,我似乎无法在 apistartup.csprogram.csapi 中找到设置。

标准程序.cs:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace WebApplication1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

标准启动.cs

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;

namespace WebApplication1
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }
}

我试图添加appsettings.json到控制台应用程序,但后来我不得不手动注入文件。使用这段代码:

configuration = new ConfigurationBuilder()
                .SetBasePath(Directory.GetParent(AppContext.BaseDirectory).FullName)
                .AddJsonFile("appsettings.json", false)
                .Build();

标签: c#asp.net-coreconfigurationconsole-applicationwebapi

解决方案


由于调用了Host.CreateDefaultBuilderprogram.cs 中的方法,应用程序知道这些 appsettings 文件。

ASP.NET Core 文档中所述,此方法启用一些默认行为,例如从以下位置加载应用程序配置:

  • 应用程序设置.json。
  • appsettings.{环境}.json。
  • 应用在开发环境中运行时的用户机密。
  • 环境变量。
  • 命令行参数。

推荐阅读