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输出PNG图片时出现GDI+一般性错误的解决方法

    ASP.NET输出PNG图片时出现GDI+一般性错误,通常表示出现了一些问题导致服务器无法正常处理图像。以下是解决该问题的完整攻略: 1. 了解GDI+错误 首先,我们需要了解GDI+错误是什么,以及为什么会出现。GDI+是Windows平台下的一种图像库,ASP.NET使用GDI+来生成和处理图像。当出现GDI+错误时,通常会伴随着一些错误消息,如“一般性…

    C# 2023年6月6日
    00
  • Javascript 浮点运算精度问题分析与解决

    下面就让我来详细讲解“Javascript 浮点运算精度问题分析与解决”的完整攻略。 1. 浮点数的精度问题 在 JavaScript 中,浮点数值类型(float 和 double)的标准是 IEEE-754,它受到二进制浮点数精度的限制。这就意味着浮点数在不仔细处理的情况下可能产生一些奇怪的计算结果,尤其是涉及除法、小数、加、减和乘。 举个例子,假设我们…

    C# 2023年6月8日
    00
  • C#中的正则表达式双引号问题

    C#中的正则表达式中双引号问题,主要是因为C#语言本身使用双引号来定义字符串,而正则表达式中也常常需要使用双引号来定义某些模式。因此,在将正则表达式作为字符串处理时,需要注意双引号字符的转义问题。 1. 双引号的转义 在C#中,要在字符串中插入双引号字符,需要使用反斜杠(\)字符进行转义,例如: string str = "This is a \&…

    C# 2023年6月7日
    00
  • .NET 资源文件resx、Resources详细说明

    下面是关于.NET资源文件resx和Resources的详细说明: 什么是资源文件? 在.NET中,资源文件用于存储和管理应用程序或组件的非代码资源,如文本、图像、音频、视频等。它允许在应用程序运行时动态加载这些资源,在不同语言环境下提供本地化支持,并且可以在编译时和运行时通过代码访问这些资源。 .NET资源文件有两种类型:resx文件和Resources类…

    C# 2023年5月31日
    00
  • Blazor组件事件处理功能

    Blazor组件事件处理功能是指在Blazor应用中,可以通过组件级别的事件处理来响应用户的操作或操作结果。下面我将详细介绍它的完整攻略及两个示例说明。 Blazor组件事件处理功能完整攻略 Blazor组件事件处理功能主要分为以下几步: 第一步:定义组件 首先我们需要定义一个组件,并定义该组件内部需要使用的事件。可以通过以下方式定义事件: [Paramet…

    C# 2023年6月3日
    00
  • asp.net模板引擎Razor中cacheName的问题分析

    下面是关于“asp.net模板引擎Razor中cacheName的问题分析”的详细攻略。 什么是Razor模板引擎? Razor是ASP.NET MVC中的一种视图引擎,它允许开发人员使用类似HTML的语法来构建动态Web页面。Razor模板引擎将这些HTML类的片段解析为C#代码,并且最终将它们编译成可执行的代码。 Razor模板引擎中的缓存 Razor模…

    C# 2023年6月1日
    00
  • 在.NetCore中 DDD中基于mediatr实现领域事件并结合EFCore进行二次封装

    [源代码地址https://github.com/junkai-li/NetCoreKevin]基于NET6搭建跨平台WebApi架构支持单点登录、多缓存、自动任务、分布式、多租户、日志、授权和鉴权 、网关 注册与发现、CAP集成事件、领域事件、 docker部署 **首要要理解什么是领域事件?**领域事件是指发生在特定领域中的事件,是你希望在同一个领域中其…

    C# 2023年5月9日
    00
  • 10个C#程序员经常用到的实用代码片段

    下面我就来为大家详细讲解“10个C#程序员经常用到的实用代码片段”的完整攻略。 1. 字符串中查找是否存在指定字符示例 在C#中,我们经常需要查找字符串中是否存在指定的字符,可以用以下代码片段: bool isCharExist = myString.Contains("a"); 其中,myString为要搜索的字符串,”a”为要查找的字…

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