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)。因此,您可以拥有StartupDevelopment,StartupStaging和StartupProduction。并根据ASPNET_ENV环境变量值使用该Startup类。因此,它使您可以灵活地为不同的环境配置启动设置。