正如前面提到,ASPNETCORE_ENVIRONMENT可以有3个值约定:Development,Staging,和Production。对于ASP.NET CORE,Startup类用于引导应用程序并加载所有配置。此外,还存在Startup.cs和ASPNETCORE_ENVIRONMENT值的约定。我们可以使用环境变量名称Startup {EnvironmentName}创建Startup类(例如StartupDevelopment)。因此,我们可以拥有StartupDevelopment,StartupStaging和StartupProduction。并根据ASPNET_ENV环境变量值使用该Startup类。因此,它使您可以灵活地为不同的环境配置启动设置。
launchSettings.json描述了如何启动应用程序-要执行的命令,是否应打开浏览器,应设置哪些环境变量,等等。然后,dotnet run或任何其他工具可以使用此信息 来运行或调试应用程序。
此json文件包含与每个调试配置文件关联的项目特定设置。.NET Core或ASP.NET Core应用程序可以使用launchSettings.json配置其启动配置文件 。这些配置文件会自动导入到相应的 运行/调试配置中,然后使用它们来 运行和调试应用程序。。该文件位于“Properties”文件夹中。当我们从Visual Studio或使用.NET Core CLI运行.NET Core应用程序时,将使用此文件中存在的设置。
需要牢记的最重要一点是这个launchSettings.json文件仅在本地开发计算机中使用。这意味着当我们将asp.net core应用程序发布到生产服务器时,不需要此文件。
在上一段中,我提到了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
当我们通过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类。因此,它使我们可以灵活地为不同的环境配置启动设置。