ASP.NET Core appsettings.json File
在这篇文章中,我将详细介绍在ASP.NET Core中使用appsettings.json文件的重要性。这篇文章,我将详细介绍下面几个问题:
- 在ASP.NET Core应用程序中,有哪些不同的配置资源可用呢?
- 什么是ASP.NET Core appsetting.json文件?
- 在ASP.NET Core应用程序中,怎样获取配置文件的信息?
- ASP.NET Core应用程序中配置执行的顺序是怎样的?
- 读取配置,默认的顺序是怎样的?
- 在ASP.NET Core应用程序中,怎样通过命名行工具,来传递配置项的值?
在ASP.NET Core应用程序中,有哪些不同的配置资源是可用的呢?
如果你使用之前版本的.NET创建应用程序,肯定就会知道Web.Config文件的重要性。
在之前版本的ASP.NET 应用程序中,我们通常将配置信息写在webConfig文件中,例如数据库连接字符串、全局变量、以及任何其他的配置信息等。
但是在ASP.NET Core中,应用程序的配置信息,可以来自很多不同的资源,例如:
- 文件(appsettings.json、appsetting.{Environment}.json、{Environment}代表的是当前程序运行的环境,例如Development、Staging或者Production).
- User Secrets
- 环境变量(Environment variables)
- 命令行参数(Command-line arguments)
什么是ASP.NET Core appsettings.json文件?
我们打开之前创建的空模板的ASP.NET Core应用程序,可以看到:
打开appsettings.json文件:
现在我添加自己自定义的配置文件:
在ASP.NET Core应用程序中,怎么获取配置信息?
在Startup类中,为了获取配置信息,你需要使用ASP.NET Core提供的IConfiguration接口。所以你要做的就是在Startup类的构造函数中注入这个IConfiguration服务.
现在我们来解释一下上面的代码:
首先我们创建了一个IConfiguration类型的私有变量,然后通过依赖注入的形式给这个变量赋值。
然后我们使用IConfiguration服务的实例来获取变量的值:
运行程序,可以看到:
怎么回事我们写的中文,咋乱码了,通过一番查询搜索:
修改代码如下:
接着运行项目:可以看到不乱码了!~~~
依赖注入设计模式
在我们之前版本的ASP.NET应用程序中,依赖注入设计模式是可选的,那是时候,你想配置的话,就得需要使用一些框架,例如:Ninject、StructureMap、IUnity容器等等。
在ASP.NET Core中,依赖注入是作为框架的一部分,嵌入到框架里面的。依赖注入模式,允许我们开发松耦合的系统,易于维护,易于扩展、易于测试。如果这篇文章中讨论依赖注入不够详细,没关系,这个系列的后面文章中,我还会介绍到。
ASP.NET Core应用程序中配置执行的顺序是怎样的?
在了解执行顺序之前,我们先看看appsettings.Development.json文件。
我们修改一下DevelopMent.json文件:
可以看到Develop.json文件中,同样有一个一样的MyCustonKey节点,我们执行程序:
输出的也是乱码,这是因为Develop.json文件还没改变格式为utf-8.我们修改文件格式,在运行:
可以发现现在没有乱码了!同样通过这个,你可以得出一个结论:如果你有多个配置文件,每个配置文件中,都有一个相同的配置键,其值,是以最后一个为准,最后的总是会覆盖之前的!
读取配置文件默认的顺序是?
不同的配置文件中,读取相同的键值的顺序是:
- appsettings.json
- appsetting.{Environment}.json.[这里我们是appsettings.development.json]
- User secrets
- 环境变量
- 命令行参数
现在我们已经有了两处一样的配置信息:MyCustomKey,现在我们在环境变量中加入这个键值信息:
用图形化界面加环境变量和在launchsettting.json文件中加是一样的:我们在图形界面加了之后,在launchsetting.json文件中立马就有了:
然后我们运行程序:
可以看到现在配置信息,读取的是环境变量中的。
怎样通过命令行工具来传递配置的值?
- 切换到项目目录:cd /d 项目目录
- dotnet run MyCustomKey=”通过命令行传递参数”
然后打开URL:
可以看到读取的是命令行的值了!
如果你愿意,同样可以改变这个默认的顺序,甚至你可以添加你自己的配置文件,接下来的文章中,我将会和你们将,如何创建一个自定义的配置文件。
下篇文章,我将说到ASP.NET Core中的中间件组件。这篇文章我已经介绍appsettings.json文件,很详细了,希望你们能看懂!