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類。因此,它使我們可以靈活地為不同的環境配置啟動設置。