c# - C# Api 如何读取 appsettings.json?
问题描述
我想知道文件是如何startup.cs
知道的appsettings.json
,我似乎无法在 apistartup.cs
或program.cs
api 中找到设置。
标准程序.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();
解决方案
由于调用了Host.CreateDefaultBuilder
program.cs 中的方法,应用程序知道这些 appsettings 文件。
如ASP.NET Core 文档中所述,此方法启用一些默认行为,例如从以下位置加载应用程序配置:
- 应用程序设置.json。
- appsettings.{环境}.json。
- 应用在开发环境中运行时的用户机密。
- 环境变量。
- 命令行参数。
推荐阅读
- c++ - 普通引用而不是weak_ptr来打破循环依赖
- nginx - Nginx websockets + SSL 不工作(net::ERR_CERT_COMMON_NAME_INVALID)
- detox - 运行排毒测试命令时无法读取未定义的属性“类型”
- python - Django - DRF 验证
- string - 在矩阵中查找字符串的位置
- c# - 将二维锯齿状数组传递给 Web 服务
- python - 使用 python3 时无法绘制系列类型
- angular - 如何在 Angular 5 中设置 formControl 的默认值
- ios - 尝试检测应用程序 + Xamarin.iOS 时设备显示为禁用
- swift - Swift 4 以编程方式定位元素