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日

相关文章

  • asp.net中的check与uncheck关键字用法解析

    让我们详细讲解一下“asp.net中的check与uncheck关键字用法解析”。 什么是check与uncheck关键字? 在C#中,check与uncheck是两个关键字,主要用于控制整数运算的溢出。check表示启用溢出检查,uncheck表示禁用溢出检查。 为什么需要check与uncheck关键字? 在C#中,整数类型默认是不启用溢出检查的,这就意…

    C# 2023年6月8日
    00
  • BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面

    一、BootstrapTable+KnockoutJS自定义T4模板快速生成增删改查页面攻略 背景简介 BootstrapTable是一款功能强大的jQuery表格插件,支持前端排序、分页、筛选等功能,使用方便,快捷。KnockoutJS是一个MVVM框架,可以自动更新页面中数据和DOM元素的状态。而自定义T4模板则是使用Visual Studio的代码生成…

    C# 2023年5月31日
    00
  • C# .NET创建虚拟目录的方法详解

    C# .NET创建虚拟目录的方法详解 当我们需要在 IIS 中创建虚拟目录时,可以利用 C# .NET 中的 Microsoft.Web.Administration 命名空间来实现。该命名空间提供了访问 IIS 的 API,可以通过代码创建、删除和修改虚拟目录等功能。 步骤一:添加引用 在开始之前,需要添加 Microsoft.Web.Administra…

    C# 2023年6月3日
    00
  • Asp.NET调用百度翻译的方法

    当我们需要在Asp.NET程序中使用百度翻译服务时,可以通过百度翻译提供的API接口来实现。下面是在Asp.NET中调用百度翻译的方法攻略: 1.申请百度翻译API接口的app id和密钥 在使用百度翻译API之前,需要在百度开发者平台申请app id和密钥。具体步骤如下: 1)进入百度开发者中心(https://console.bce.baidu.com/…

    C# 2023年5月31日
    00
  • 使用Seq搭建免费的日志服务的方法

    标题:使用Seq搭建免费的日志服务的方法 简介 在软件开发过程中,日志是非常关键的组成部分。而使用Seq 则可以方便地实现对服务日志的收集和分析。本文将介绍如何搭建Seq日志服务。 步骤 1. 安装Docker 首先,需要安装docker,如果已经有了可跳过此步骤。 2. 下载Seq镜像 通过docker命令行工具,下载Seq镜像文件: docker pul…

    C# 2023年6月3日
    00
  • C# 微信支付 wx.chooseWXPay 签名错误的解决方法

    针对“C#微信支付wx.chooseWXPay签名错误的解决方法”,我给出以下完整攻略: 1. 概述 在微信支付中,使用wx.chooseWXPay接口进行支付时,需要传递签名数据,并且签名数据必须和微信后台生成的一致,否则会造成签名错误。本文主要讲解在C#中如何生成微信支付所需的签名,并介绍常见的签名错误及其解决方法。 2. 签名生成方法 在C#中生成微信…

    C# 2023年5月15日
    00
  • C#实现自定义打印文字和图片的示例代码

    下面是“C#实现自定义打印文字和图片的示例代码”的完整攻略: 1. 准备工作 首先,你需要创建一个Windows窗口应用程序,可以使用Visual Studio来创建项目。程序中需要添加一个打印预览控件(PrintPreviewControl),用于显示要打印的内容预览。同时,也需要添加一个打印对话框(PrintDialog),用于打印设置和选择打印机。下面…

    C# 2023年6月1日
    00
  • .NET Core利用 AsyncLocal 实现共享变量的代码详解

    关于”.NET Core利用 AsyncLocal 实现共享变量的代码详解”的攻略,我先介绍一些背景知识: AsyncLocal是一种用于跨异步操作保留数据的机制,它在.NET Core中被广泛使用。使用AsyncLocal可以在异步操作(例如Task.Run)中共享数据。 在使用AsyncLocal时,每个异步上下文都有一个数据容器,数据容器内包含了该上下…

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