ASP.NET Core中的launchsetting.json是什么

launchSettings.json描述了如何启动应用程序-要执行的命令,是否应打开浏览器,应设置哪些环境变量,等等。然后,dotnet run或任何其他工具可以使用此信息 来运行或调试应用程序。

此json文件包含与每个调试配置文件关联的项目特定设置。.NET Core或ASP.NET Core应用程序可以使用launchSettings.json配置其启动配置文件 。这些配置文件会自动导入到相应的 运行/调试配置中,然后使用它们来 运行和调试应用程序。。该文件位于“Properties”文件夹中。当我们从Visual Studio或使用.NET Core CLI运行.NET Core应用程序时,将使用此文件中存在的设置。

需要牢记的最重要一点是这个launchSettings.json文件仅在本地开发计算机中使用。这意味着当我们将asp.net核心应用程序发布到生产服务器时,不需要此文件。

在上一段中,我提到了Visual Studio项目调试配置文件和环境变量。在我们继续之前,了解这两个概念很重要。

环境变量

我们知道,环境变量是一组动态命名值,可以影响正在运行的进程在计算机上的行为方式。它们是流程运行环境的一部分。因此,类似地,可以在ASP.NET CORE中设置各种环境变量,这些变量会影响运行时的各个部分。ASPNETCORE_ENVIRONMENT变量实际上定义了3个按照惯例使用的值:Development,Staging,和Production。我们也可以设置我们想要的任何值。

launchSettings.json文件有2个部分。IIS Express和您的应用程序名称.当我们通过按CTRL + F5或仅按F5键从Visual Studio运行应用程序时,默认情况下将使用带有“ commandName”:“ IISExpress”的配置文件。另一方面,如果使用.NET Core CLI运行ASP.NET Core应用程序,则将使用带有“ commandName”:“ Project”的配置文件。

launchSettings.json文件的commandName属性的值可以是以下任意一项。  IISExpress / Project

launchSettings.json文件的CommandName属性值以及应用程序项目文件中的AspNetCoreHostingModel元素值将确定内部和外部Web服务器(反向代理服务器)。 

在Startup.cs得代码中,我们可以看到这些值如何使用:

public Startup(IHostingEnvironment env)
{
   var builder = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);
   if (env.IsDevelopment())
   {
     builder.AddUserSecrets();
   }
   builder.AddEnvironmentVariables();
   Configuration = builder.Build();
}

上面的代码正在检查运行环境是否为开发环境 env.IsDevelopment()

Visual Studio项目调试配置文件

ASP.NET CORE附带了对2种不同服务器的支持:

  • Microsoft.AspNet.Server.IIS
  • Microsoft.AspNet.Server.Kestrel(Kestrel)

当我们通过vs修改项目的默认设置时,更改将保留launchSettings.json中。现在,让我们看一看launchsetting.json代码。

launchsetting.json代码

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:56458",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebApplication1": {
      "commandName": "Project",
      "launchBrowser": true,
      "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

第一部分定义IIS设置,因为IIS是默认的Web主机选择。在配置文件部分中有2个配置文件“ IISExpress”,“Project”。并且为每个配置文件,环境变量,要使用的运行时版本及其命令名也进行了定义。当我们使用任何一个选项启动应用程序时,在launchsetting中定义的设置将用于您的Web应用程序。

启动约定

正如前面提到,ASPNETCORE_ENVIRONMENT可以有3个值约定:Development,Staging,和Production。对于ASP.NET CORE,Startup类用于引导应用程序并加载所有配置。此外,还存在Startup.cs和ASPNETCORE_ENVIRONMENT值的约定。我们可以使用环境变量名称Startup {EnvironmentName}创建Startup类(例如StartupDevelopment)。因此,您可以拥有StartupDevelopmentStartupStagingStartupProduction。并根据ASPNET_ENV环境变量值使用该Startup类。因此,它使您可以灵活地为不同的环境配置启动设置。

上一篇:Tomcat下载,以及打不开的问题


下一篇:ASP.NET Core 3.1 WebAPI的配置问题