ASP.Net Core解讀launchSettings.json


一、環境

目標框架:.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 。 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM