zoukankan      html  css  js  c++  java
  • 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

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

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

  • 相关阅读:
    一些常用的库
    isKindOfClass isMemeberOfClass 的区分
    自学知识的博客
    更新进度
    ORA-01950:对表空间“”XXXX”无权限,解决办法
    ORA-01589错误的解决办法
    背景四
    专题-主存储器与Cache的地址映射方式
    C语言中宏的相关知识
    Lab1:Linux内核编译及添加系统调用(详细版)
  • 原文地址:https://www.cnblogs.com/lzjsky/p/15783142.html
Copyright © 2011-2022 走看看