1、Asp.net Core的默认环境配置在项目Properties——》launchSettings.json下
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:5001", "sslPort": 0 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Dev" } }, "Ers.Api": { "commandName": "Project", "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:5001;", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "QA" } } } }
请注意,我们有两个配置信息:
- IIS Express 和 StudentManagement
当我们通过按CTRL + F5
或只是F5
从 Visual Studio 运行项目时。 默认情况下,使用调用配置文件名称"commandName": "IISExpress",
。 另外一种情况,如果我们使用.NET Core CLI(dotnet run)运行项目,则使用带有"commandName": "Project",
的配置文件 。
我们可以通过单击 Visual Studio 中的下拉列表来更改要使用的配置文件中 .commandName 属性,修改默认设置。
默认值可以是:
- 项目
- IISExpress
- IIS
此值与项目文件中的AspNetCoreHostingModel
元素的值会有对应关系,会一起指定要启动的内部和外部 Web 服务器(反向代理服务器)。通过“donet run ”命令时调用的是项目"Ers.Api"的配置,通过vs2019的IIS press调用的是"IIS Express"里的配置
commandName | AspNetCoreHostingModel 的值 | Internal Web Server(内部服务器) | External Web Server(外部服务器) |
---|---|---|---|
项目 | 忽略托管设置的值 | 只使用一个 Web 服务器 - Kestrel | 只使用一个 Web 服务器 - Kestrel |
IISExpress | 进程内托管(InProcess) | 只使用一个 Web 服务器 - IIS Express | 只使用一个 Web 服务器 - IIS Express |
IISExpress | 进程外托管(OutOfProcess) | Kestrel | IIS Express |
IIS | 进程内托管(InProcess) | 只使用一个 Web 服务器 - IIS | 只使用一个 Web 服务器 - IIS |
IIS | 进程外托管(OutOfProcess) | Kestrel | IIS |
您还可以通过直接编辑 launchSettings.json 文件中的设置,也可以使用 Visual Studio 提供的图形用户界面(GUI)更改设置。
通过 GUI 来设置
- 在 Visual Studio 的解决方案资源管理器中右键单击项目名称,然后从上下文菜单中选择“属性”。 单击项目“属性”窗口中的“调试”选项卡,如下图
使用 GUI 我们可以更改launchSettings.json
文件中的设置。
注意,环境变量“ASPNETCORE_ENVIRONMENT”设置的默认设置为“Development”。
我们可以将此值更改为Staging或Production
,具体取决于我们是在Staging还是Production
环境中运行此项目。
我们还可以添加新的环境变量,比如测试环境QA。
Startup
示例配置,在构造方法里IHostingEnvironment会读取launchSettings.json里的信息,此时env会读取到对应的ASPNETCORE_ENVIRONMENT的值到EnvironmentName
public Startup(IHostingEnvironment env) { var build = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile($"Configs/{env.EnvironmentName}/appsettings.json", optional: false) .AddJsonFile($"Configs/{env.EnvironmentName}/cashesettings.json", optional: false) .AddJsonFile($"Configs/{env.EnvironmentName}/ERSsettings.json", optional: false) .AddEnvironmentVariables(); Configuration = build.Build(); AppConfig.Configuration = build.Build(); }