zoukankan      html  css  js  c++  java
  • ASP.NET Core开发-读取配置文件Configuration appsettings.json

    https://www.cnblogs.com/linezero/p/Configuration.html

    ASP.NET Core 是如何读取配置文件,今天我们来学习。

    ASP.NET Core的配置系统已经和之前版本的ASP.NET有所不同了,之前是依赖于System.Configuration和XML配置文件web.config。

    新的配置系统支持多种格式的配置文件。

    下面我们来以json 格式的配置文件正式开始学习。

    我们新建一个ASP.NET Core Web 应用程序,选择无身份验证。

     

    读取配置文件

    在项目目录下有个 appsettings.json ,我们先来操作这个文件。

    在appsettings.json 添加如下两个节点。

    复制代码
    {
      "Data": "LineZero",
      "ConnectionStrings": {
        "DefaultConnection": "数据库1",
        "DevConnection": "数据库2"
      },
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Debug",
          "System": "Information",
          "Microsoft": "Information"
        }
      }
    }
    复制代码

    下面我们来读取。由于项目默认已经将该文件加入ConfigurationBuilder 之中,所以我们可以直接来读取。

    在 Configure 方法中读取:

            public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
            {
                var data = Configuration["Data"];
                //两种方式读取
                var defaultcon = Configuration.GetConnectionString("DefaultConnection");
                var devcon = Configuration["ConnectionStrings:DevConnection"];

    调试程序,可以看到数据成功取出。

    多环境区分

    我们复制一个appsettings.json 然后重命名为 appsettings.Development.json

    更改appsettings.Development.json 如下:

    复制代码
    {
      "Data": "LineZero Development",
      "ConnectionStrings": {
        "DefaultConnection": "开发数据库1",
        "DevConnection": "开发数据库2"
      },
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Debug",
          "System": "Information",
          "Microsoft": "Information"
        }
      }
    }
    复制代码

    然后我们调试程序,你会发现获取到的值变成了Development.json 里的值。

    这里就是多环境配置。

    复制代码
            public Startup(IHostingEnvironment env)
            {
                var builder = new ConfigurationBuilder()
                    .SetBasePath(env.ContentRootPath)
                    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)//增加环境配置文件,新建项目默认有
                    .AddEnvironmentVariables();
                Configuration = builder.Build();
            }
    复制代码

    如果我们直接执行读取到的就是appsettings.json 的值,因为直接执行时是 Production 环境。

    下面是输出图:

    调试时:

    dotnet run 时:

    对象读取

    我们在appsettings.json 及 Development.json 都添加一个 SiteConfig 节点。

      "SiteConfig": {
        "Name": "LineZero's Blog",
        "Info": "ASP.NET Core 开发及跨平台,配置文件读取"
      },

    然后新建一个SiteConfig 类。

        public class SiteConfig
        {
            public string Name { get; set; }
            public string Info { get; set; }
        }

    首先在 ConfigureServices 中添加Options 及对应配置。

    复制代码
            public void ConfigureServices(IServiceCollection services)
            {
                // Add framework services.
                services.AddMvc();
                //添加options
                services.AddOptions();
                services.Configure<SiteConfig>(Configuration.GetSection("SiteConfig"));
            }
    复制代码

    然后我们在 Controller 中读取。

    复制代码
        public class HomeController : Controller
        {
            public SiteConfig Config;
    
            public HomeController(IOptions<SiteConfig> option)
            {
                Config = option.Value;
            }
    
            public IActionResult Index()
            {
                return View(Config);
            }
        }
    复制代码

    对应View Index.cshtml

    @model SiteConfig
    @{
        ViewData["Title"] = Model.Name;
    }
    <h1>@Model.Name</h1>
    <h2>@Model.Info</h2>

    执行程序 http://localhost:5000/

    如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

     
    博客示例代码GitHub:https://github.com/linezero/Blog
  • 相关阅读:
    移动Oracle数据库表空间文件。
    Web页面嵌入复杂WinForm控件权限问题
    关于bleand2000下面oracle服务器优化
    祝大家新年快乐!
    CentOS安装配置MongoDB及PHP MongoDB 扩展安装配置 新风宇宙
    FastDFS介绍和配置过程 新风宇宙
    ubuntu下安装redisserver和phpredis 新风宇宙
    PHP安装fastDFS扩展 新风宇宙
    用socket发送流数据示用 php://input? 接受post数据(可实现php和c/c++数据通讯) 新风宇宙
    linux操作系统下c语言编程入门 新风宇宙
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/8797445.html
Copyright © 2011-2022 走看看