【问题标题】:How does a C# Api read the appsettings.json?C# Api 如何读取 appsettings.json?
【发布时间】:2021-08-12 16:27:12
【问题描述】:

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

标准程序.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-core configuration console-application webapi


【解决方案1】:

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

正如ASP.NET Core documentation 中提到的,此方法启用了一些默认行为,例如从以下位置加载应用配置:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多