Asp.Net Core轻松学习系列之配置文件,如何轻松掌握Asp.Net Core的配置文件管理?
Asp.Net Core轻松学习系列之配置文件
背景介绍
在ASP.NET Core应用程序中,配置管理是一个非常重要的部分,它允许我们从多个来源(如appsettings.json、环境变量、命令行参数等)读取配置信息,本文将详细介绍如何在ASP.NET Core项目中创建和使用配置文件,并提供相应的代码示例和表格归纳。
表格
配置文件类型
类型 | 描述 | 示例 |
JSON | 最常用的配置文件格式,用于存储配置数据。 | appsettings.json |
XML | 层次化数据存储,适用于复杂配置。 | appsettings.xml |
INI | 简单的键值对存储。 | appsettings.ini |
YAML | 人类可读的数据序列化格式。 | appsettings.yaml |
TOML | 面向对象的配置文件格式。 | appsettings.toml |
配置提供程序
类型 | 描述 | 示例 |
文件提供程序 | 从文件中读取配置。 | AddJsonFile |
环境变量提供程序 | 从环境变量中读取配置。 | AddEnvironmentVariables |
命令行提供程序 | 从命令行参数中读取配置。 | AddCommandLine |
Key-Value提供程序 | 从IConfiguration对象中读取配置。 | AddInMemoryCollection |
分点详细内容
创建配置文件
在ASP.NET Core项目的根目录下创建一个名为appsettings.json
的文件,并添加以下内容:
{ "ConnectionStrings": { "DefaultConnection": "Server=localhost;Database=myapp;User Id=myuser;Password=mypassword;" }, "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AppSettings": { "ApiKey": "MyApiKey", "FeatureFlag": true } }
安装必要的NuGet包
确保安装了Microsoft.Extensions.Configuration
和Microsoft.Extensions.Configuration.Json
包:
dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.Json
在Program.cs中配置
在ASP.NET Core 3.0及以上版本中,配置通常在Program.cs
文件中进行:
using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using System.IO; 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>(); }) .ConfigureAppConfiguration((hostingContext, config) => { var env = hostingContext.HostingEnvironment; config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); }); }
在Startup.cs中使用配置
通过构造函数注入IConfiguration
来使用配置:
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; 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.AddControllersWithViews(); } // 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(); } else { app.UseExceptionHandler("/Home/Error"); // The default HSTS value is 30 days. You may want to change this for production scenarios, you may need a more long-term value. app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); } }
在控制器或服务中使用配置
一旦在Startup
中有了IConfiguration
的实例,就可以在控制器或服务中通过依赖注入来使用它:
using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; public class HomeController : ControllerBase { private readonly IConfiguration _configuration; public HomeController(IConfiguration configuration) { _configuration = configuration; } [HttpGet] public string Get() { string connectionString = _configuration.GetConnectionString("DefaultConnection"); string apiKey = _configuration["AppSettings:ApiKey"]; return $"Connection String: {connectionString}, API Key: {apiKey}"; } }
归纳与展望
本文介绍了ASP.NET Core中的配置文件的基本概念和使用方法,包括如何创建和使用配置文件,以及如何在程序中读取这些配置,通过本文的学习,读者应该能够掌握ASP.NET Core应用程序中的配置管理技巧,并能够在实际项目中灵活运用。
各位小伙伴们,我刚刚为大家分享了有关“Asp.Net Core轻松学习系列之配置文件”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权请联系我们,一经查实立即删除!