ASP.NET Core开发-读取配置文件Configuration

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/

 

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

 

ASP.NET Core实践交流群:  133144964
.NET Core 跨平台交流群:  550897034
博客示例代码GitHub: https://github.com/linezero/Blog
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值