一、環境
目標框架:.NET Core3.1
ASP.NET Core是一個全新的Web開發平台,微軟在它上面構建了MVC、SingalR、GRPC、Orleans這樣廣泛使用的Web框架,我們先以MVC框架為例介紹利用ASP.NET Core構建項目的常見名詞。這篇文章介紹啟動配置文件launchSettings.json
ASP.NET Core MVC項目文件夾解讀
二、Properties——launchSettings.json
啟動配置文件,你可以在項目中“Properties”文件夾中找到該文件。launchSettings.json
文件是ASP.NET Core應用特有的配置標准,用於應用的啟動准備工作,包括環境變量,開發端口等。在launchSettings.json
文件中進行配置和右鍵項目—屬性中所提交的更改的效果是一樣的,並且支持同步更新。此文件設置了Visual Studio可以啟動的不同環境,以下是示例項目中launchSettings.json文件生成的默認代碼:
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:7349", "sslPort": 44325 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "NET5.Api": { "commandName": "Project", "dotnetRunMessages": "true", "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:5001;http://localhost:5000", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
我們可以看出該配置文件默認添加了兩個節點,其中“iisSettings”用於設置IIS相關的選項,而“profiles”節點定義了一系列用於表示應用啟動場景的Profile。初始的launchSettings.json文件會默認創建兩個Profile,一個被命名為“IIS Express”,另一個則使用當前項目名稱來命名(“NET5.Api”)。這兩個節點分別對應Visual Stuido的開始調試按鈕的下拉選項,您可以選擇對應的選項來啟動應用程序。
三、launchSettings.json代碼說明
每一個Profile相當於定義了應用的啟動場景,相關的設置包括應用啟動的方式、環境變量和URL等,具體的設置包括:
1、iisSettings是IIS的配置
- windowsAuthentication:IIS是否啟用 Windows 身份驗證
- anonymousAuthentication:IIS是否啟用匿名身份驗證
- applicationUrl:指定 IIS 服務器的地址
- sslPort:指定IIS 服務器的https端口
2、profiles中的IIS Express配置
- launchBrowser :一個布爾類型的開關,表示應用程序的時候是否自動啟動瀏覽器
- launchUrl:如果launchBrowser被設置為true,瀏覽器采用的初始化路徑通過該屬性進行設置。
- environmentVariables:該屬性用來設置環境變量。ASP.NET Core應用中正是利用這樣一個環境變量來表示當前的部署環境。多環境的配置可以通過ASPNETCORE_ENVIRONMENT切換。
- commandName:啟動當前應用程序的命令類型,有效的選項包括IIS、IISExpress和Project,前三個選項分別表示采用IIS、IISExpress和指定的可執行文件(.exe)來啟動應用程序。如果我們使用dotnet run命令來啟動程序,對應Profile的啟動命名名稱應該設置為Project。
- applicationUrl:應用程序采用的URL列表,多個URL之間采用分號(“;”)進行分隔。
3、profiles中的NET5.Api配置
- 相比IIS Express,這里多了一個dotnetRunMessages,它是一個布爾值,是否在運行時給予反饋信息。
四、項目的啟動
1、不使用launchSettings.json文件
如果在執行dotnet run命令的時候不希望加載launchSettings.json文件,我們可以通過顯式指定命令行參數--no-launch-profile來實現。如下圖所示,我們在執行dotnet run命令時指定了--no-launch-profile參數,所以應用會采用KestrelServer默認的監聽地址(http://localhost:5000和https://localhost:5001)。由於launchSettings.json根本就沒有被加載,所以當前執行環境從Development變成了默認的Production。
2、顯式指定URL
如果既不想使用launchSettings.json文件中定義的URL,也不想使用KestrelServer默認采用的監聽地址,我們可以在應用程序中顯式指定應用的URL。如下面的代碼片段所示,我們只需要調用IWebHostBuilder的擴展方法UseUrls指定一組以分號分隔的URL即可。
using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; namespace NET5.Api { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseKestrel() .UseUrls("http://192.168.2.112:2314;https//28.16.49.45:3568"). UseStartup<Startup>(); }); } }
3、項目啟動使用的服務器
commandName | AspNetCoreHostingModel 的值 | 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 |
要獲取其它更多屬性的詳細信息,請轉到此鏈接:http://json.schemastore.org/launchsettings 。