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 属性,修改默认设置。 8 1

默认值可以是:

  • 项目
  • IISExpress
  • IIS

此值与项目文件中的AspNetCoreHostingModel元素的值会有对应关系,会一起指定要启动的内部和外部 Web 服务器(反向代理服务器)。通过“donet run ”命令时调用的是项目"Ers.Api"的配置,通过vs2019的IIS press调用的是"IIS Express"里的配置

commandNameAspNetCoreHostingModel 的值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();
        }