這篇文章主要為大家詳細介紹了ASP.NET Core環境變數和啟動設定的配置教程,具有一定的參考價值,感興趣的小夥伴們可以參考一下
在這一部分內容中,我們來討論ASP.NET Core中的一個新功能:環境變數和啟動設定,它將開發過程中的調試和測試變的更加簡單。我們只需要簡單的修改設定檔,就可以實現開發、預演、生產環境的切換。
ASPNETCORE_ENVIRONMENT
ASP.NET Core控制環境切換最核心的東西是“ASPNETCORE_ENVIRONMENT”環境變數,它直接控制當前應用程式啟動並執行環境類型。您可以通過在項目上右鍵菜單選擇“屬性”選項,然後切換到“調試”標籤來修改此環境變數。
此環境變數架構預設提供了三個值,當然您也可以定義其它的值:
Development(開發)
Staging(預演)
Production(生產)
我們在Startup.cs檔案中,可以使用相應的方法來控制應用程式的行為。以下是建立樣本程式時Startup.cs檔案產生的預設代碼:
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
其中 IHostingEnvironment 類型的變數表示的是當前應用程式啟動並執行環境,ASP.Net Core提供了四個擴充方法,用於檢測 “ASPNETCORE_ENVIRONMENT”當前的值。
IsDevelopment()
IsStaging()
IsProduction()
IsEnvironment()
如果您需要檢查該應用程式是否在特定環境中運行,可以使用 env.IsEnvironment("environmentname") ,該方法忽略大小寫(請不要使用 env.EnvironmentName == "Development" 來檢查環境)。
過上面的代碼,我們可以知道,如果當前是開發環境,使用UseDeveloperExceptionPage()、UseBrowserLink()方法啟用開發環境的錯誤頁面和啟用Visual Stuido中的Browser Link功能,這些功能都有利於我們在開發過程中偵錯工具;但是在生產環境中我們不希望啟用這些功能,而是將出錯頁面指向路徑“/Home/Error”,給使用者顯示友好的錯誤介面。
launchSettings.json檔案
ASP.Net Core包含一個launchSettings.json的新檔案,您可以在項目中“Properties”檔案夾中找到該檔案:
此檔案設定了Visual Studio可以啟動的不同環境,以下是樣本項目中launchSettings.json檔案產生的預設代碼:
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:22437/", "sslPort": 0 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "CoreWebApp": { "commandName": "Project", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" }, "applicationUrl": "http://localhost:22438" } }}
在這裡,有兩個配置節點:“IIS Express”、“CoreWebApp”,這兩個節點,分別對應Visual Stuido的開始調試按鈕的下拉選項:
launchSettings.json 檔案用於設定在 Visual Stuido 運行應用程式的環境。我們也可以添加節點,該節點名稱會自動添加到 Visual Stuido 調試按鈕的下拉選項中。
現在我們來詳細說一下這些屬性的詳細資料:
{ "iisSettings": { "windowsAuthentication": false,//啟用Windows身分識別驗證 "anonymousAuthentication": true,//啟用匿名驗證 "iisExpress": { "applicationUrl": "http://localhost:22437/",//應用啟動的Url路徑。 "sslPort": 44355//啟用SSL的連接埠 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "commandLineArgs": "", //傳遞命令的參數 "workingDirectory": "", //設定命令的工作目錄 "launchBrowser": true, //是否在瀏覽器中啟動 "launchUrl": "1111", //在瀏覽器中啟動的相對URL "environmentVariables": { //將環境變數設定為鍵/值對 "ASPNETCORE_ENVIRONMENT": "Development" } } }}
要擷取其它更多屬性的詳細資料,請轉到此連結:http://json.schemastore.org/launchsettings 。
Environment 標籤
通過這個標籤,應用程式當根據當前啟動並執行環境修改MVC視圖的結構。在樣本項目中_Layout.cshtml檔案產生的預設代碼:
<environment names="Development"> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" rel="external nofollow" /> <link rel="stylesheet" href="~/css/site.css" rel="external nofollow" /> </environment> <environment names="Staging,Production"> <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css" asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow" asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" /> <link rel="stylesheet" href="~/css/site.min.css" rel="external nofollow" asp-append-version="true" /> </environment>
在這個樣本中,當在開發模式下運行應用程式時,我們使用本地的Bootstrap檔案和自訂css檔案;但是如果在預演和生產環境中運行,我們則使用ASP.NET內容分髮網絡(CDN)上的檔案副本和經過壓縮過的自訂樣式。通過這種方式,我們可以提高應用程式的效能。
總結
在ASP.NET Core中,開發人員可以使用環境變數輕而易舉控制應用程式在不同的環境中的行為。使用這些功能,我們完成以下功能: