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日

相关文章

  • C#实现基于加减按钮形式控制系统音量及静音的方法

    下面我来详细讲解如何使用C#实现基于加减按钮形式控制系统音量及静音的方法。 准备工作 在开始编写代码之前,需要确保以下几点: 了解C#语言基础知识; 熟悉Windows API编程; 确认开发环境已经安装了以下库:System.Runtime.InteropServices和CoreAudioApi。 实现步骤 第一步:获取系统音量 使用CoreAudioA…

    C# 2023年6月7日
    00
  • C# DateTime日期比较方法案例详解

    C# DateTime日期比较方法案例详解 在C#中,我们可以使用DateTime类型来操作日期和时间。在实际开发中,会经常涉及到日期的比较操作,例如判断两个日期的先后顺序、计算两个日期之间的天数等。本文将介绍C#中常用的日期比较方法及其使用案例。 比较方法 C#中常用的日期比较方法如下: 方法名 描述 Equals 判断指定DateTime对象是否与此Da…

    C# 2023年6月1日
    00
  • C#实现Windows Form调用R进行绘图与显示的方法

    下面我将为您详细讲解“C#实现WindowsForm调用R进行绘图与显示的方法”的完整攻略。本攻略将分为以下几个步骤: 安装R语言环境和R.Net库 在使用C#调用R前,需要先安装R语言环境和R.Net库。可以在R官网(https://www.r-project.org/)下载最新版本的R语言环境,并在控制台中安装R.Net库。R.Net库可以通过NuGet…

    C# 2023年5月15日
    00
  • C# ref and out的使用小结

    下面是关于“C# ref 和 out 的使用小结”的详细讲解: 什么是 ref 和 out ref 和 out 是 C# 中用于传递参数的关键字。它们可以让一个方法修改传递给它的参数,并把修改后的值返回给调用者。 ref 和 out 两者非常相似,唯一的区别在于: ref:传入的参数必须是已经初始化了的变量。 out:传入的参数可以是未初始化的变量。 ref…

    C# 2023年5月15日
    00
  • C#泛型类创建与使用的方法

    下面是关于”C#泛型类创建与使用的方法”的详细讲解。 什么是C#泛型类? 泛型类是一种将类型参数作为其一个或多个参数的类,可以将类型参数声明为在类、方法和接口代码中使用的占位符类型。使用泛型类可以为类型参数提供编译时类型安全的类和方法。 C#泛型类的创建 可以使用关键字class和类型参数列表创建一个泛型类,其中类型参数列表由尖括号(<>)中的一…

    C# 2023年6月1日
    00
  • 基于asp.net实现图片在线上传并在线裁剪功能

    下面是基于asp.net实现图片在线上传并在线裁剪功能的完整攻略: 1. 确定上传插件 为了实现在线上传图片,我们需要选择一个合适的上传插件。目前市场上比较流行的上传插件有uploadify和plupload,我们可以根据需求自行选择。 在这里,我以uploadify为例进行说明。 2. 实现图片上传 需先引入jquery、uploadify相关的js和cs…

    C# 2023年5月31日
    00
  • Unity 制作一个分数统计系统

    下面是 Unity 制作一个分数统计系统的完整攻略: 步骤一:创建一个 Text 组件 Text 组件用于显示分数统计信息,我们需要在 Canvas 上创建一个 Text 组件并设置相应的属性。在 Hierachy 面板中,选择 Canvas,右键选择 UI > Text,然后设置 Text 组件的属性: 将 Text 组件放到游戏场景中需要的位置; …

    C# 2023年6月3日
    00
  • WPF实现时钟特效

    WPF实现时钟特效 简介 WPF 是微软的一种技术,全称为 Windows Presentation Foundation,是一种基于 .NET Framework 的 UI 框架。WPF 可以创建许多华丽的 UI 特效,并且允许开发人员用 C# 或 VB.NET 等常见编程语言来创建 XAML 应用程序。 在 WPF 中,时钟特效是一种常见的应用场景,可以…

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