1、Asp.net Core的默認環境配置在項目Properties——》launchSettings.json下
{ "$schema": "http://json.schemastore.org/launchsettings.json", "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:5001", "sslPort": 0 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "launchUrl": "swagger", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Dev" } }, "Ers.Api": { "commandName": "Project", "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "https://localhost:5001;", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "QA" } } } }
請注意,我們有兩個配置信息:
- IIS Express 和 StudentManagement
當我們通過按CTRL + F5
或只是F5
從 Visual Studio 運行項目時。 默認情況下,使用調用配置文件名稱"commandName": "IISExpress",
。 另外一種情況,如果我們使用.NET Core CLI(dotnet run)運行項目,則使用帶有"commandName": "Project",
的配置文件 。
我們可以通過單擊 Visual Studio 中的下拉列表來更改要使用的配置文件中 .commandName 屬性,修改默認設置。
默認值可以是:
- 項目
- IISExpress
- IIS
此值與項目文件中的AspNetCoreHostingModel
元素的值會有對應關系,會一起指定要啟動的內部和外部 Web 服務器(反向代理服務器)。通過“donet run ”命令時調用的是項目"Ers.Api"的配置,通過vs2019的IIS press調用的是"IIS Express"里的配置
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 |
您還可以通過直接編輯 launchSettings.json 文件中的設置,也可以使用 Visual Studio 提供的圖形用戶界面(GUI)更改設置。
通過 GUI 來設置
- 在 Visual Studio 的解決方案資源管理器中右鍵單擊項目名稱,然后從上下文菜單中選擇“屬性”。 單擊項目“屬性”窗口中的“調試”選項卡,如下圖
使用 GUI 我們可以更改launchSettings.json
文件中的設置。
注意,環境變量“ASPNETCORE_ENVIRONMENT”設置的默認設置為“Development”。
我們可以將此值更改為Staging或Production
,具體取決於我們是在Staging還是Production
環境中運行此項目。
我們還可以添加新的環境變量,比如測試環境QA。
Startup
示例配置,在構造方法里IHostingEnvironment會讀取launchSettings.json里的信息,此時env會讀取到對應的ASPNETCORE_ENVIRONMENT的值到EnvironmentName
public Startup(IHostingEnvironment env) { var build = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile($"Configs/{env.EnvironmentName}/appsettings.json", optional: false) .AddJsonFile($"Configs/{env.EnvironmentName}/cashesettings.json", optional: false) .AddJsonFile($"Configs/{env.EnvironmentName}/ERSsettings.json", optional: false) .AddEnvironmentVariables(); Configuration = build.Build(); AppConfig.Configuration = build.Build(); }