今天仍然是讲基础知识点。希望大家不要急,之所以花这么多篇幅讲基础知识,其实是希望大家能夯实理论之后,后面写代码就没那么困难。此外,基础知识还有助于在面试过程中加分。今天的主要内容为.net core的vs启动项目配置文件——launchSettings.json,以及项目引用的变量参数配置文件——appsettings.json。以下是内容概要:
- launchSettings.json文件
- launchSettings.json介绍
- launchSettings.json内容
- commandName和environmentVariables属性
- launchSettings.json集成界面设置
- appsettings.json文件
- appsettings.json的介绍
- appsettings.json的使用
一、launchSettings.json文件
- launchSettings.json介绍launchSettings.json文件位于“Properties”文件夹下,该文件描述了如何启动项目。比如:是否打开浏览器,应用程序使用哪些环境变量等。然后使用此信息来运行或调试我们的应用程序。这是前面创建演示项目生成的默认launchSettings.json文件的代码:
- launchSettings.json内容文件内容分为两个根节点:iisSettings 节点为 IIS设定,里面可以 IIS 或 IIS Express 通用的设定值,而 profiles 节点则是让 Visual Studio 可以选择要用哪个 Profile 来启动应用程序。profiles 节点有两个配置:一个使用IIS Express运行应用程序,另一个使用命令行处理程序运行应用程序。有趣的是它们直接对应于Visual Studio的启动按钮:换句话说:launchSettings.json文件控制使用Visual Studio可以运行应用程序的环境。实际上,如果我们添加一个新的配置文件,它将自动将该配置文件添加到启动按钮。这个可以自己试着加下。那我们该怎么配置这个文件?
- commandName和environmentVariables属性我们可以通过http://json.schemastore.org/launchsettings这个地址查看launchSettings.json完整的属性列表,通过这个JSON Schema来判断所能设定的属性。不过根据字面也能知道语义。这里介绍下commandName和environmentVariables。commandName 属性可以使用以下属性值:1)IISExpress 预设此属性值会使用vs所提供的 IIS Express测试服务器来执行应用程序。2)IIS 如果本机安装了IIS,就可以使用属性值,应用程序就会在IIS中运行。3)Project 使用console的方式来启动应用程序,相当于使用CLI来执行,因此可以从console中直接看到应用程序的输出,对于Asp.Net Core来说,其内置了Kestrel 轻量的网页服务器。4)Executable 允许执行任意的可执行文件(exe文件),此选项不使用于网页应用程序。5)Snapshot Debugger 发生异常时,可自动从实时 Web 应用程序收集调试快照。快照显示发生异常时源代码和变量的状态。environmentVariables是通过键/值对来设定。Asp.Net Core引用了一个特定的环境变量,ASPNETCORE_ENVIRONMENT来描述应用程序正在运行的环境,这个变量可以设置为:Development、Staging和Production,不区分大小写。
- launchSettings.json集成界面设置除了上面的操作方式,我们还可以在解决方案资源管理器中右键单击项目名称,然后从上下文菜单中选择“属性”选项。在项目“属性” 窗口上单击 “调试” 选项卡 ,如下所示。对于这个launchSettings.json文件,它仅在本地开发计算机中使用,部署到生产环境时就不需要此文件。如果有些设置需要生产服务器上使用,则需要将此类设置存储在appsettings.json文件中。通常,在Asp.Net Core应用程序中,配置设置将存储在appsettings.json文件中。下面来说说appsettings.json。
二、appsettings.json文件
- appsettings.json介绍在一个复杂的应用程序中,需要在整个应用程序中使用多个常量,但是我们无法简单地在所需的每个位置对其进行硬编码,因为后期我们需要更改某些值,我们将不得不在使用变量的位置去修改它,这很容易造成一些意想不到的错误。在开发过程中为了解决此问题,我们将此类常量保留在一个单独的文件,并在需要的时候去访问它,而appsetttings.json就是为了解决这类问题而存在。比如我们非常熟悉的数据库连接字符串。除了基本参数的配置外,我们在实际的开发过程中,还会遇到开发、测试、生产各环境的配置是有所不一样,如果只使用一个配置文件,在修改过程中也容易造成问题。asp.net core与时俱进,根据应用程序环境来维护不同的特定于应用程序的设置。而它的命名也是根据环境来命名,如:appsettings.Development.json。我们来看下appsttings.json在项目中如何使用,这里我们先了解下用法,在asp.net core mvc的时候会再深入的探讨它的使用。
- appsettings.json使用appsettings.json在创建项目的时候会一并创建好,打开appsettings.json文件,会看到以下代码:{
“Logging”: {
“LogLevel”: {
“Default”: “Information”,
“Microsoft”: “Warning”,
“Microsoft.Hosting.Lifetime”: “Information”
}
},
“AllowedHosts”: “*”
}上面这段代码是典型的键值对形式的json数据结构。Logging节点是日志配置信息;AllowedHosts允许访问的Host主机。我们在原有的基础上加一个键,”Msg”: “Hello World!”{
“Logging”: {
“LogLevel”: {
“Default”: “Information”,
“Microsoft”: “Warning”,
“Microsoft.Hosting.Lifetime”: “Information”
}
},
“AllowedHosts”: “*”,
“Msg”: “Hello World!”
}在Startup类中访问配置信息,我们需要使用到一个IConfiguration这个类,通过Startup类的构造函数注入IConfiguration服务。我们直接上代码:using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
namespace FirstWebApp
{
public class Startup
{
private IConfiguration Configuration;
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void Configure(IApplicationBuilder app)
{
app.Run(async context => {
await context.Response.WriteAsync(Configuration[“Msg”]);
});
}
}
}Ctrl+F5运行看下结果,如下图:这是appsettings简单使用方式。我们来看下如何根据不同环境配置文件,以及它执行顺序是怎么样的。以本地开发为例,我们展开appsettings.json文件,在该文件下有appsettings.Development.json文件,这个文件也是创建项目时默认生成的。双击打开这个文件。内容如下:{
“Logging”: {
“LogLevel”: {
“Default”: “Information”,
“Microsoft”: “Warning”,
“Microsoft.Hosting.Lifetime”: “Information”
}
}
}看着跟appsettings.json内容一样,这些都是默认配置。现在增加一个键,”Msg”: “Hello World! from Development “,大家思考一下,它会输出什么?下图是运行结果:我们来分析下为什么输出的是“Hello World! from Development”?我们知道在项目启动运行生成web主机时会加载appsettings.Development.json。有人可能会好奇,他是在哪里加载的?我们在介绍Program调用CreateDefaultBuilder方法有提到过,调用CreateDefaultBuilder方法源码里会有如下两行:.AddJsonFile(“appsettings.json”, optional: false, reloadOnChange: true)
.AddJsonFile($”appsettings.{env.EnvironmentName}.json”, optional: true)这两行代码在web主机启动时会把当前项目配置对应环境的appsettings.json文件加载好,而环境的变量在launchSettings文件中ASPNETCORE_ENVIRONMENT键设置。另外,从刚输出的Hello World! from Development,我们发现不同环境配置文件中存在相同的键时,appsettings.Development.json的优先级比较高。也就是说如果我们使用默认的配置加载顺序,后面配置的将覆盖前面的配置源。回到appsettings.json文件来,我们增加一个”Name”: “susd say”键值对,在Startup文件的Configure方法内的WriteAsync增加Configuration[“Name”]的输出。await context.Response.WriteAsync(Configuration[“Name”]+”:”+Configuration[“Msg”]);直接运行看结果:在Development文件里没有配置Name这个节点,输出的是appsettings.json的配置信息,在源代码里我们可以看到appsettings.json文件是不能缺少,而且是默认的。我们配置不同环境的参数配置时,有些共享的配置就可以直接配置在appsettings.json里,而特定环境的参数配置到特定环境的配置文件里。
这两个json文件,对开发者来说非常重要。项目开发过程灵活应用配置有助于我们提高程序的维护。今天的两个json文件就说到这,后期会进行深入讨论appsettings.json的应用。 最后,祝大家儿童节快乐,学习快乐~
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/218373.html