ASP.NET Core appsettings.json File

在这篇文章中,我将详细介绍在ASP.NET Core中使用appsettings.json文件的重要性。这篇文章,我将详细介绍下面几个问题:

  1. 在ASP.NET Core应用程序中,有哪些不同的配置资源可用呢?
  2. 什么是ASP.NET Core appsetting.json文件?
  3. 在ASP.NET Core应用程序中,怎样获取配置文件的信息?
  4. ASP.NET Core应用程序中配置执行的顺序是怎样的?
  5. 读取配置,默认的顺序是怎样的?
  6. 在ASP.NET Core应用程序中,怎样通过命名行工具,来传递配置项的值?

在ASP.NET Core应用程序中,有哪些不同的配置资源是可用的呢?

       如果你使用之前版本的.NET创建应用程序,肯定就会知道Web.Config文件的重要性。

       在之前版本的ASP.NET 应用程序中,我们通常将配置信息写在webConfig文件中,例如数据库连接字符串、全局变量、以及任何其他的配置信息等。

       但是在ASP.NET Core中,应用程序的配置信息,可以来自很多不同的资源,例如:

  1. 文件(appsettings.json、appsetting.{Environment}.json、{Environment}代表的是当前程序运行的环境,例如Development、Staging或者Production).
  2. User Secrets
  3. 环境变量(Environment variables)
  4. 命令行参数(Command-line arguments)

什么是ASP.NET Core appsettings.json文件?

我们打开之前创建的空模板的ASP.NET Core应用程序,可以看到:

image

打开appsettings.json文件:

image

现在我添加自己自定义的配置文件:

image

在ASP.NET Core应用程序中,怎么获取配置信息?

在Startup类中,为了获取配置信息,你需要使用ASP.NET Core提供的IConfiguration接口。所以你要做的就是在Startup类的构造函数中注入这个IConfiguration服务.

image

现在我们来解释一下上面的代码:

首先我们创建了一个IConfiguration类型的私有变量,然后通过依赖注入的形式给这个变量赋值。

image

然后我们使用IConfiguration服务的实例来获取变量的值:

image

运行程序,可以看到:

image

怎么回事我们写的中文,咋乱码了,通过一番查询搜索:

修改代码如下:

image

接着运行项目:可以看到不乱码了!~~~

image

依赖注入设计模式

        在我们之前版本的ASP.NET应用程序中,依赖注入设计模式是可选的,那是时候,你想配置的话,就得需要使用一些框架,例如:Ninject、StructureMap、IUnity容器等等。

       在ASP.NET Core中,依赖注入是作为框架的一部分,嵌入到框架里面的。依赖注入模式,允许我们开发松耦合的系统,易于维护,易于扩展、易于测试。如果这篇文章中讨论依赖注入不够详细,没关系,这个系列的后面文章中,我还会介绍到。

ASP.NET Core应用程序中配置执行的顺序是怎样的?

在了解执行顺序之前,我们先看看appsettings.Development.json文件。

image

我们修改一下DevelopMent.json文件:

image

可以看到Develop.json文件中,同样有一个一样的MyCustonKey节点,我们执行程序:

image

输出的也是乱码,这是因为Develop.json文件还没改变格式为utf-8.我们修改文件格式,在运行:

image

image

可以发现现在没有乱码了!同样通过这个,你可以得出一个结论:如果你有多个配置文件,每个配置文件中,都有一个相同的配置键,其值,是以最后一个为准,最后的总是会覆盖之前的!

读取配置文件默认的顺序是?

不同的配置文件中,读取相同的键值的顺序是:

  1. appsettings.json
  2. appsetting.{Environment}.json.[这里我们是appsettings.development.json]
  3. User secrets
  4. 环境变量
  5. 命令行参数

现在我们已经有了两处一样的配置信息:MyCustomKey,现在我们在环境变量中加入这个键值信息:

image

用图形化界面加环境变量和在launchsettting.json文件中加是一样的:我们在图形界面加了之后,在launchsetting.json文件中立马就有了:

image

然后我们运行程序:

image

可以看到现在配置信息,读取的是环境变量中的。

怎样通过命令行工具来传递配置的值?

  1. 切换到项目目录:cd /d 项目目录
  2. dotnet run MyCustomKey=”通过命令行传递参数”

image

然后打开URL:

image

可以看到读取的是命令行的值了!

如果你愿意,同样可以改变这个默认的顺序,甚至你可以添加你自己的配置文件,接下来的文章中,我将会和你们将,如何创建一个自定义的配置文件。

下篇文章,我将说到ASP.NET Core中的中间件组件。这篇文章我已经介绍appsettings.json文件,很详细了,希望你们能看懂!

每天学一点,每天积累一天,进步就不止一点点!PS:好记性不如烂笔头,学会总结,学会思考~~~ ----要飞翔,必须靠自己!
posted @ 2020-04-06 16:18  码农9300  阅读(364)  评论(0编辑  收藏  举报