ASP.NET CORE如何读取json配置文件?

2026-03-26 23:131阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1553个文字,预计阅读时间需要7分钟。

ASP.NET CORE如何读取json配置文件?

目录:

1.在Startup类中读取json配置文件

2.使用Configuration直接读取

3.使用IOptions接口

4.定义实体类

5.修改json文件

6.在Startup类中配置

7.读取自定义json文件

8.实例化类

ASP.NET CORE如何读取json配置文件?

9.添加方式1

目录
  • 一、在Startup类中读取json配置文件
    • 1、使用Configuration直接读取
    • 2、使用IOptions接口
      • 1、定义实体类
      • 2、修改json文件
      • 3、在StartUp类里面配置
    • 3、读取自定义json文件
      • 实例化类
      • 添加方式1
      • 添加方式2
  • 二、在类库中读取json文件

    在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?

    一、在Startup类中读取json配置文件

    1、使用Configuration直接读取

    看下面的代码:

    public IConfiguration Configuration { get; }

    Configuration属性就是.net core中提供的用来读取json文件。例如:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env) { string option1 = $"option1 = {this.Configuration["Option1"]}"; string option2 = $"option2 = {this.Configuration["Option2"]}"; string suboption1 = $"suboption1 = {this.Configuration["subsection:suboption1"]}"; // 读取数组 string name1 = $"Name={this.Configuration["student:0:Name"]} "; string age1 = $"Age= {this.Configuration["student:0:Age"]}"; string name2 = $"Name={this.Configuration["student:1:Name"]}"; string age2 = $"Age= {this.Configuration["student:1:Age"]}"; // 输出 app.Run(c => c.Response.WriteAsync(option1+"\r\n"+option2+ "\r\n"+suboption1+ "\r\n"+name1+ "\r\n"+age1+ "\r\n"+name2+ "\r\n"+age2)); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } app.UseHttpsRedirection(); app.UseMvc(); }

    结果:

    2、使用IOptions接口

    1、定义实体类

    public class MongodbHostOptions { /// <summary> /// 连接字符串 /// </summary> public string Connection { get; set; } /// <summary> /// 库 /// </summary> public string DataBase { get; set; } public string Table { get; set; } }

    2、修改json文件

    在appsettings.json文件中添加MongodbHost节点:

    { "Logging": { "LogLevel": { "Default": "Warning" } }, "option1": "value1_from_json", "option2": 2, "subsection": { "suboption1": "subvalue1_from_json" }, "student": [ { "Name": "Gandalf", "Age": "1000" }, { "Name": "Harry", "Age": "17" } ], "AllowedHosts": "*", //MongoDb "MongodbHost": { "Connection": "mongodb://127.0.0.1:27017", "DataBase": "TemplateDb", "Table": "CDATemplateInfo" } }

    注意:

    MongodbHost里面的属性名必须要和定义的实体类里面的属性名称一致。

    3、在StartUp类里面配置

    添加OptionConfigure方法绑定

    private void OptionConfigure(IServiceCollection services) { //MongodbHost信息 services.Configure<MongodbHostOptions>(Configuration.GetSection("MongodbHost")); }

    在ConfigureServices方法中调用上面定义的方法:

    public void ConfigureServices(IServiceCollection services) { // 调用OptionConfigure方法 OptionConfigure(services); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }

    在控制器中使用,代码如下:

    using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; namespace ReadJsonDemo.Controllers { [Route("api/[controller]")] [ApiController] public class MongodbController : ControllerBase { private readonly MongodbHostOptions _mongodbHostOptions; /// <summary> /// 通过构造函数注入 /// </summary> /// <param name="mongodbHostOptions"></param> public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions) { _mongodbHostOptions = mongodbHostOptions.Value; } [HttpGet] public async Task Get() { await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table); } } }

    运行结果:

    3、读取自定义json文件

    在上面的例子中都是读取的系统自带的appsettings.json文件,那么该如何读取我们自己定义的json文件呢?这里可以使用ConfigurationBuilder类。

    实例化类

    var builder = new ConfigurationBuilder();

    添加方式1

    builder.AddJsonFile("path", false, true);

    其中path表示json文件的路径,包括路径和文件名。

    添加方式2

    builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true }).Build()

    具体代码如下:

    private void CustomOptionConfigure(IServiceCollection services) { IConfiguration _configuration; var builder = new ConfigurationBuilder(); // 方式1 //_configuration = builder.AddJsonFile("custom.json", false, true).Build(); // 方式2 _configuration = builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true }).Build(); services.Configure<WebSiteOptions>(_configuration.GetSection("WebSiteConfig")); }

    ConfigureServices方法如下:

    public void ConfigureServices(IServiceCollection services) { // 调用OptionConfigure方法 OptionConfigure(services); CustomOptionConfigure(services); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }

    控制器代码如下:

    using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; namespace ReadJsonDemo.Controllers { [Route("api/[controller]")] [ApiController] public class MongodbController : ControllerBase { private readonly MongodbHostOptions _mongodbHostOptions; private readonly WebSiteOptions _webSiteOptions; /// <summary> /// 通过构造函数注入 /// </summary> /// <param name="mongodbHostOptions"></param> public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions,IOptions<WebSiteOptions> webSiteOptions) { _mongodbHostOptions = mongodbHostOptions.Value; _webSiteOptions = webSiteOptions.Value; } [HttpGet] public async Task Get() { await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table); await Response.WriteAsync("\r\n"); await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" + _webSiteOptions.WebSiteUrl); } } }

    二、在类库中读取json文件

    在上面的示例中都是直接在应用程序中读取的,那么如何在单独的类库中读取json文件呢?看下面的示例代码:

    using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.IO; using System.Text; namespace Common { public class JsonConfigHelper { public static T GetAppSettings<T>(string fileName, string key) where T : class, new() { // 获取bin目录路径 var directory = AppContext.BaseDirectory; directory = directory.Replace("\\", "/"); var filePath = $"{directory}/{fileName}"; if (!File.Exists(filePath)) { var length = directory.IndexOf("/bin"); filePath = $"{directory.Substring(0, length)}/{fileName}"; } IConfiguration configuration; var builder = new ConfigurationBuilder(); builder.AddJsonFile(filePath, false, true); configuration = builder.Build(); var appconfig = new ServiceCollection() .AddOptions() .Configure<T>(configuration.GetSection(key)) .BuildServiceProvider() .GetService<IOptions<T>>() .Value; return appconfig; } } }

    注意:这里要添加如下几个程序集,并且要注意添加的程序集的版本要和.net core web项目里面的程序集版本一致,否则会报版本冲突的错误

    • 1、Microsoft.Extensions.Configuration
    • 2、Microsoft.Extensions.configuration.json
    • 3、Microsoft.Extensions.Options
    • 4、Microsoft.Extensions.Options.ConfigurationExtensions
    • 5、Microsoft.Extensions.Options

    json文件如下:

    { "WebSiteConfig": { "WebSiteName": "CustomWebSite", "WebSiteUrl": "https:localhost:12345" }, "DbConfig": { "DataSource": "127.0.0.1", "InitialCatalog": "MyDb", "UserId": "sa", "Password": "123456" } }

    DbHostOptions实体类定义如下:

    using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace ReadJsonDemo { public class DbHostOptions { public string DataSource { get; set; } public string InitialCatalog { get; set; } public string UserId { get; set; } public string Password { get; set; } } }

    注意:这里的DbHostOptions实体类应该建在单独的类库中,这里为了演示方便直接建在应用程序中了。

    在控制器中调用:

    using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Common; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; namespace ReadJsonDemo.Controllers { [Route("api/[controller]")] [ApiController] public class MongodbController : ControllerBase { private readonly MongodbHostOptions _mongodbHostOptions; private readonly WebSiteOptions _webSiteOptions; /// <summary> /// 通过构造函数注入 /// </summary> /// <param name="mongodbHostOptions"></param> public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions,IOptions<WebSiteOptions> webSiteOptions) { _mongodbHostOptions = mongodbHostOptions.Value; _webSiteOptions = webSiteOptions.Value; } [HttpGet] public async Task Get() { DbHostOptions dbOptions = JsonConfigHelper.GetAppSettings<DbHostOptions>("custom.json", "DbConfig"); await Response.WriteAsync("DataSource:" + dbOptions.DataSource + "\r\nInitialCatalog;" + dbOptions.InitialCatalog+ "\r\nUserId:"+dbOptions.UserId+ "\r\nPassword"+dbOptions.Password); await Response.WriteAsync("\r\n"); await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table); await Response.WriteAsync("\r\n"); await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" + _webSiteOptions.WebSiteUrl); } } }

    运行结果:

    到此这篇关于ASP.NET CORE读取json格式配置文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

    标签:配置文件

    本文共计1553个文字,预计阅读时间需要7分钟。

    ASP.NET CORE如何读取json配置文件?

    目录:

    1.在Startup类中读取json配置文件

    2.使用Configuration直接读取

    3.使用IOptions接口

    4.定义实体类

    5.修改json文件

    6.在Startup类中配置

    7.读取自定义json文件

    8.实例化类

    ASP.NET CORE如何读取json配置文件?

    9.添加方式1

    目录
    • 一、在Startup类中读取json配置文件
      • 1、使用Configuration直接读取
      • 2、使用IOptions接口
        • 1、定义实体类
        • 2、修改json文件
        • 3、在StartUp类里面配置
      • 3、读取自定义json文件
        • 实例化类
        • 添加方式1
        • 添加方式2
    • 二、在类库中读取json文件

      在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?

      一、在Startup类中读取json配置文件

      1、使用Configuration直接读取

      看下面的代码:

      public IConfiguration Configuration { get; }

      Configuration属性就是.net core中提供的用来读取json文件。例如:

      public void Configure(IApplicationBuilder app, IHostingEnvironment env) { string option1 = $"option1 = {this.Configuration["Option1"]}"; string option2 = $"option2 = {this.Configuration["Option2"]}"; string suboption1 = $"suboption1 = {this.Configuration["subsection:suboption1"]}"; // 读取数组 string name1 = $"Name={this.Configuration["student:0:Name"]} "; string age1 = $"Age= {this.Configuration["student:0:Age"]}"; string name2 = $"Name={this.Configuration["student:1:Name"]}"; string age2 = $"Age= {this.Configuration["student:1:Age"]}"; // 输出 app.Run(c => c.Response.WriteAsync(option1+"\r\n"+option2+ "\r\n"+suboption1+ "\r\n"+name1+ "\r\n"+age1+ "\r\n"+name2+ "\r\n"+age2)); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } app.UseHttpsRedirection(); app.UseMvc(); }

      结果:

      2、使用IOptions接口

      1、定义实体类

      public class MongodbHostOptions { /// <summary> /// 连接字符串 /// </summary> public string Connection { get; set; } /// <summary> /// 库 /// </summary> public string DataBase { get; set; } public string Table { get; set; } }

      2、修改json文件

      在appsettings.json文件中添加MongodbHost节点:

      { "Logging": { "LogLevel": { "Default": "Warning" } }, "option1": "value1_from_json", "option2": 2, "subsection": { "suboption1": "subvalue1_from_json" }, "student": [ { "Name": "Gandalf", "Age": "1000" }, { "Name": "Harry", "Age": "17" } ], "AllowedHosts": "*", //MongoDb "MongodbHost": { "Connection": "mongodb://127.0.0.1:27017", "DataBase": "TemplateDb", "Table": "CDATemplateInfo" } }

      注意:

      MongodbHost里面的属性名必须要和定义的实体类里面的属性名称一致。

      3、在StartUp类里面配置

      添加OptionConfigure方法绑定

      private void OptionConfigure(IServiceCollection services) { //MongodbHost信息 services.Configure<MongodbHostOptions>(Configuration.GetSection("MongodbHost")); }

      在ConfigureServices方法中调用上面定义的方法:

      public void ConfigureServices(IServiceCollection services) { // 调用OptionConfigure方法 OptionConfigure(services); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }

      在控制器中使用,代码如下:

      using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; namespace ReadJsonDemo.Controllers { [Route("api/[controller]")] [ApiController] public class MongodbController : ControllerBase { private readonly MongodbHostOptions _mongodbHostOptions; /// <summary> /// 通过构造函数注入 /// </summary> /// <param name="mongodbHostOptions"></param> public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions) { _mongodbHostOptions = mongodbHostOptions.Value; } [HttpGet] public async Task Get() { await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table); } } }

      运行结果:

      3、读取自定义json文件

      在上面的例子中都是读取的系统自带的appsettings.json文件,那么该如何读取我们自己定义的json文件呢?这里可以使用ConfigurationBuilder类。

      实例化类

      var builder = new ConfigurationBuilder();

      添加方式1

      builder.AddJsonFile("path", false, true);

      其中path表示json文件的路径,包括路径和文件名。

      添加方式2

      builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true }).Build()

      具体代码如下:

      private void CustomOptionConfigure(IServiceCollection services) { IConfiguration _configuration; var builder = new ConfigurationBuilder(); // 方式1 //_configuration = builder.AddJsonFile("custom.json", false, true).Build(); // 方式2 _configuration = builder.Add(new JsonConfigurationSource {Path= "custom.json",Optional=false,ReloadOnChange=true }).Build(); services.Configure<WebSiteOptions>(_configuration.GetSection("WebSiteConfig")); }

      ConfigureServices方法如下:

      public void ConfigureServices(IServiceCollection services) { // 调用OptionConfigure方法 OptionConfigure(services); CustomOptionConfigure(services); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); }

      控制器代码如下:

      using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; namespace ReadJsonDemo.Controllers { [Route("api/[controller]")] [ApiController] public class MongodbController : ControllerBase { private readonly MongodbHostOptions _mongodbHostOptions; private readonly WebSiteOptions _webSiteOptions; /// <summary> /// 通过构造函数注入 /// </summary> /// <param name="mongodbHostOptions"></param> public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions,IOptions<WebSiteOptions> webSiteOptions) { _mongodbHostOptions = mongodbHostOptions.Value; _webSiteOptions = webSiteOptions.Value; } [HttpGet] public async Task Get() { await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table); await Response.WriteAsync("\r\n"); await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" + _webSiteOptions.WebSiteUrl); } } }

      二、在类库中读取json文件

      在上面的示例中都是直接在应用程序中读取的,那么如何在单独的类库中读取json文件呢?看下面的示例代码:

      using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using System; using System.Collections.Generic; using System.IO; using System.Text; namespace Common { public class JsonConfigHelper { public static T GetAppSettings<T>(string fileName, string key) where T : class, new() { // 获取bin目录路径 var directory = AppContext.BaseDirectory; directory = directory.Replace("\\", "/"); var filePath = $"{directory}/{fileName}"; if (!File.Exists(filePath)) { var length = directory.IndexOf("/bin"); filePath = $"{directory.Substring(0, length)}/{fileName}"; } IConfiguration configuration; var builder = new ConfigurationBuilder(); builder.AddJsonFile(filePath, false, true); configuration = builder.Build(); var appconfig = new ServiceCollection() .AddOptions() .Configure<T>(configuration.GetSection(key)) .BuildServiceProvider() .GetService<IOptions<T>>() .Value; return appconfig; } } }

      注意:这里要添加如下几个程序集,并且要注意添加的程序集的版本要和.net core web项目里面的程序集版本一致,否则会报版本冲突的错误

      • 1、Microsoft.Extensions.Configuration
      • 2、Microsoft.Extensions.configuration.json
      • 3、Microsoft.Extensions.Options
      • 4、Microsoft.Extensions.Options.ConfigurationExtensions
      • 5、Microsoft.Extensions.Options

      json文件如下:

      { "WebSiteConfig": { "WebSiteName": "CustomWebSite", "WebSiteUrl": "https:localhost:12345" }, "DbConfig": { "DataSource": "127.0.0.1", "InitialCatalog": "MyDb", "UserId": "sa", "Password": "123456" } }

      DbHostOptions实体类定义如下:

      using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace ReadJsonDemo { public class DbHostOptions { public string DataSource { get; set; } public string InitialCatalog { get; set; } public string UserId { get; set; } public string Password { get; set; } } }

      注意:这里的DbHostOptions实体类应该建在单独的类库中,这里为了演示方便直接建在应用程序中了。

      在控制器中调用:

      using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Common; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; namespace ReadJsonDemo.Controllers { [Route("api/[controller]")] [ApiController] public class MongodbController : ControllerBase { private readonly MongodbHostOptions _mongodbHostOptions; private readonly WebSiteOptions _webSiteOptions; /// <summary> /// 通过构造函数注入 /// </summary> /// <param name="mongodbHostOptions"></param> public MongodbController(IOptions<MongodbHostOptions> mongodbHostOptions,IOptions<WebSiteOptions> webSiteOptions) { _mongodbHostOptions = mongodbHostOptions.Value; _webSiteOptions = webSiteOptions.Value; } [HttpGet] public async Task Get() { DbHostOptions dbOptions = JsonConfigHelper.GetAppSettings<DbHostOptions>("custom.json", "DbConfig"); await Response.WriteAsync("DataSource:" + dbOptions.DataSource + "\r\nInitialCatalog;" + dbOptions.InitialCatalog+ "\r\nUserId:"+dbOptions.UserId+ "\r\nPassword"+dbOptions.Password); await Response.WriteAsync("\r\n"); await Response.WriteAsync("Connection:" + _mongodbHostOptions.Connection + "\r\nDataBase;" + _mongodbHostOptions.DataBase + "\r\nTable:" + _mongodbHostOptions.Table); await Response.WriteAsync("\r\n"); await Response.WriteAsync("WebSiteName:" + _webSiteOptions.WebSiteName + "\r\nWebSiteUrl;" + _webSiteOptions.WebSiteUrl); } } }

      运行结果:

      到此这篇关于ASP.NET CORE读取json格式配置文件的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

      标签:配置文件