ASP.NET CORE读取json格式配置文件

ASP.NET Core 读取 JSON 格式配置文件的流程:

  1. appsettings.json 文件中定义所需的配置项。

  2. Program.cs 文件中使用 CreateDefaultBuilder(args) 方法创建 IHostBuilder 对象,并在 ConfigureAppConfiguration(...) 方法中添加读取配置文件的功能。

  3. 在需要使用配置项的组件中注入 IConfiguration 对象,并使用 GetSection(...) 方法获取对应节点下的配置项。

下面是一个完整的示例:

Step 1:定义配置项和设置文件路径

appsettings.json 文件中定义需要的配置项,如下所示:

{
  "AppSettings": {
    "Title": "My Website",
    "Version": "1.0.0",
    "Database": {
      "Type": "SqlServer",
      "ConnectionString": "Server=(local);Database=mydb;Trusted_Connection=True;"
    }
  }
}

Program.cs 文件中设置配置文件路径,如下所示:

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((hostingContext, config) =>
        {
            config.SetBasePath(Directory.GetCurrentDirectory()); // 设置配置文件路径
            config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true); // 添加配置文件
        })
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        });

Step 2:在Startup.cs中获取配置项

Startup.cs 文件中通过构造函数注入 IConfiguration 对象,并使用 GetSection(...) 方法来获取指定配置项。

public class Startup
{
    private readonly IConfiguration _configuration;

    public Startup(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    public void ConfigureServices(IServiceCollection services)
    {
        // 获取配置项
        string title = _configuration.GetSection("AppSettings:Title").Value;
        string version = _configuration.GetSection("AppSettings:Version").Value;
        string dbType = _configuration.GetSection("AppSettings:Database:Type").Value;
        string connectionString = _configuration.GetSection("AppSettings:Database:ConnectionString").Value;

        // 将配置项注册到依赖注入容器中
        services.AddSingleton(new AppSettings(title, version, new DatabaseSettings(dbType, connectionString)));

        services.AddControllers();
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        ...
    }
}

示例一:在控制器中获取配置项

[Route("api/[controller]")]
[ApiController]
public class ConfigController : ControllerBase
{
    private readonly AppSettings _appSettings;

    public ConfigController(AppSettings appSettings)
    {
        _appSettings = appSettings;
    }

    [HttpGet]
    public IActionResult GetConfig()
    {
        return Ok(new
        {
            Title = _appSettings.Title,
            Version = _appSettings.Version,
            Database = _appSettings.Database
        });
    }
}

示例二:在中间件中获取配置项

public class CustomMiddleware
{
    private readonly RequestDelegate _next;
    private readonly AppSettings _appSettings;

    public CustomMiddleware(RequestDelegate next, AppSettings appSettings)
    {
        _next = next;
        _appSettings = appSettings;
    }

    public async Task Invoke(HttpContext httpContext)
    {
        // 使用配置项
        string title = _appSettings.Title;
        string version = _appSettings.Version;
        string dbType = _appSettings.Database.Type;
        string connectionString = _appSettings.Database.ConnectionString;

        await _next(httpContext);
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET CORE读取json格式配置文件 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Visual Studio 未能加载各种Package包的解决方案

    Visual Studio无法加载Package解决方案错误的完整攻略 在使用Visual Studio时,你可能会遇到“未能加载各种Package包”的错误提示。这种情况通常是由于Visual Studio无法找到或加载所需的NuGet Package,而导致的。下面是解决此问题的完整攻略。 步骤一:查看Package控制台 在Visual Studio中…

    C# 2023年5月15日
    00
  • AngularJS服务service用法总结

    AngularJS服务service用法总结 AngularJS是一个流行的前端框架,它提供了许多可重用的组件,包括服务(service)。服务是一个函数或对象,它可以被注入到控制器、指令等其他组件中,提供更多的功能和行为。在本文中,我们将深入探讨AngularJS中的服务(service)用法。 创建服务 要创建一个服务,我们可以使用AngularJS提供…

    C# 2023年6月1日
    00
  • C# Stream.Read – 从流中读取数据

    C#的Stream.Read方法作用是从当前流中读取指定数量的字节并将其存储到缓冲区中。 该方法的使用方法如下: public virtual int Read( byte[] buffer, int offset, int count ) 参数说明: buffer:字节型数组,是用来缓存读出的数据的。 offset:整数类型,是buffer参数中的偏移量,…

    C# 2023年4月19日
    00
  • Win11 Dev Build 22000.65开发预览版推送(附更新修复已知问题汇总)

    Win11 Dev Build 22000.65开发预览版推送 微软公司于2021年6月28日推送了 Win11 Dev Build 22000.65开发预览版。这是 Win11 的开发者预览版,意味着可能会存在各种问题,仅供测试和体验使用。本文将为大家详细讲解该版本的更新内容以及已知问题。 更新内容 用户体验 启动菜单 Win11对启动菜单进行了全新设计,…

    C# 2023年6月7日
    00
  • C#验证用户输入信息是否包含危险字符串的方法

    当用户提交输入信息时,应该进行对输入信息进行过滤,排除包含有恶意的、危险的字符串,避免安全问题的发生。本文将详细讲解 C# 验证用户输入信息是否包含危险字符串的方法。 步骤1:安装 Microsoft.Security.Application 库 Microsoft.Security.Application 是一个 .Net FrameWork 库,提供了一…

    C# 2023年5月15日
    00
  • ASP.NET MVC命名空间时引起错误的解决方法

    当使用ASP.NET MVC框架进行开发时,有时候会遇到命名空间冲突而引起的编译错误。本文将详细讲解如何解决命名空间冲突的问题。 引起错误的原因 在ASP.NET MVC项目中,可能会出现几个不同的类库或者插件都使用了相同的命名空间。这时候编译器就会产生冲突,无法确定要使用哪个类库或插件中的命名空间。从而导致编译失败,程序无法正常运行。 解决方法 1. 使用…

    C# 2023年5月15日
    00
  • C#获取所有SQL Server数据库名称的方法

    下面是针对“C#获取所有SQL Server数据库名称的方法”的完整攻略: 目录 需求 步骤 步骤1:引入命名空间 步骤2:创建连接对象 步骤3:打开数据库连接 步骤4:获取数据库列表 步骤5:关闭连接 示例1 示例2 需求 在使用C#编写SQL Server相关应用时,有时需要获取服务器上所有存在的数据库名称。本攻略将详细讲解如何使用C#获取SQL Ser…

    C# 2023年6月2日
    00
  • C# TextBox多行文本框的字数限制问题

    关于C#多行文本框的字数限制问题,我们可以通过代码实现两种方法:使用MaxLength属性和自定义字符串截取方法。 使用MaxLength属性 首先,我们需要在窗体中添加一个多行文本框控件(TextBox),在属性窗口中找到MaxLength属性,这个属性表示在多行文本框中可以输入的最大长度。我们可以将其设置为我们需要的最大长度,比如说100: textBo…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部