浏览器标题切换
浏览器标题切换end

Intern Day9 - ASP.NET Core - 应用配置

配置文件介绍

  • 配置文件是appsettings.json。在 ASP.NET 中,我们一般使用 Web.config 来进行配置。但是在 ASP.NET Core 中 ,你们会发现 Web.config 已经没了,因为它被 appsettings.json 这个配置文件取代了。

  • 我们的主机在创建完成以后,我们的服务容器里就已经默认注册了一些服务,其中有一个服务就是配置服务,这个服务是可以注册到startup类中的构造函数里面。

  • 配置文件里,配置项的名称不区分大小写。比如ConnectionString、WebName这些

如何在appsettings.json中读取这些配置:(在Startup.cs中去写)

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            // 比如:我想读取配置文件中的连接字符串ConnectionString
            
            // 最简单的办法:
            app.Run(async context =>
            {
                var connStr = _configuration["ConnectionString"];
                
                //如果想找一级的下一级,中间用 大分类:小分类 连接
            });
        }

绑定到配置模型对象

问题原因:使用字符串键名获取配置值很不优雅(比如说我们想去获得一个bool值,但是读取出来的却是string类型),也容易出错。

解决办法:我们可以把配置项绑定到对象。

解决步骤:

  1. 首先,创建配置项结构对应的配置模型(想要读取哪个配置项就去配置对应的属性)。比如在appsetting.json中有如下内容,我们就需要去创建一个appsetting.cs
  1. 在appsetting.cs写上:
  1. 或者采用全部/部分绑定的方式(绑定全部/部分appsetting)(在这个方法里绑定,只能绑定一次用一次)
// 全部绑定
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
		var appSetting = new AppSetting();
		_configuration.Bind(appSetting);//这时候appSetting就自动绑定了
}   

// 部分绑定
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
		var webSetting = new WebSetting();
		_configuration.GetSection("WebSetting").Bind(webSetting);//这时候appSetting就自动绑定了
}   

但是在上面的代码中,我们只能绑定一次用一次,那怎么解决绑定一次可以永久使用呢?

在Startup.cs的Startup方法中,把已经有配置参数的配置(配置选项),当做服务注册进来,哪里想用依赖注入就行了。在Startup.cs的Startup方法中添加如下代码:

  1. 用非泛型添加:
  1. 用泛型语句添加:

    services.Configure<AppSetting>(_configuration);
    

注册进来之后如何使用?(注册配置选项)

  1. 比如说我们想在Startup类下的Configure方法中使用,我们直接在env后面添加(即利用泛型注入的方式):

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env,IOptions<AppSetting> appOptions)
    
  2. 如何调用:看图片上最后一行代码:

  1. 注意:凡是可以支持注入的地方,都可以用这种方式获取配置项

自定义配置文件

参考下面的参考博客

参考

参考视频:https://www.bilibili.com/video/BV1y7411A7TJ?p=1

参考博客:https://blog.csdn.net/weixin_31437175/article/details/112705263?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161430230516780261985866%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=161430230516780261985866&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-3-112705263.pc_search_result_hbase_insert&utm_term=+app.Run(async+context+%3D>

posted @ 2021-02-26 10:15  抓水母的派大星  阅读(59)  评论(0编辑  收藏  举报