ASP.NET Core控制環(huán)境切換最核心的東西是“ASPNETCORE_ENVIRONMENT”環(huán)境變量,它直接控制當前應用程序運行的環(huán)境類型。您可以通過在項目上右鍵菜單選擇“屬性”選項,然后切換到“調(diào)試”標簽來修改此環(huán)境變量。
十余年的江干網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。成都營銷網(wǎng)站建設的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整江干建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“江干網(wǎng)站設計”,“江干網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
此環(huán)境變量框架默認提供了三個值,當然您也可以定義其它的值:
Development(開發(fā))
Staging(預演)
Production(生產(chǎn))
我們在Startup.cs文件中,可以使用相應的方法來控制應用程序的行為。以下是創(chuàng)建示例程序時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 類型的變量表示的是當前應用程序運行的環(huán)境,ASP.Net Core提供了四個擴展方法,用于檢測 “ASPNETCORE_ENVIRONMENT”當前的值。
IsDevelopment()
IsStaging()
IsProduction()
IsEnvironment()
如果您需要檢查該應用程序是否在特定環(huán)境中運行,可以使用 env.IsEnvironment("environmentname") ,該方法忽略大小寫(請不要使用 env.EnvironmentName == "Development" 來檢查環(huán)境)。
過上面的代碼,我們可以知道,如果當前是開發(fā)環(huán)境,使用UseDeveloperExceptionPage()、UseBrowserLink()方法啟用開發(fā)環(huán)境的錯誤頁面和啟用Visual Stuido中的Browser Link功能,這些功能都有利于我們在開發(fā)過程中調(diào)試程序;但是在生產(chǎn)環(huán)境中我們不希望啟用這些功能,而是將出錯頁面指向路徑“/Home/Error”,給用戶顯示友好的錯誤提示。
ASP.Net Core包含一個launchSettings.json的新文件,您可以在項目中“Properties”文件夾中找到該文件:
此文件設置了Visual Studio可以啟動的不同環(huán)境,以下是示例項目中l(wèi)aunchSettings.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" } } }
在這里,有兩個配置節(jié)點:“IIS Express”、“CoreWebApp”,這兩個節(jié)點,分別對應Visual Stuido的開始調(diào)試按鈕的下拉選項,您可以選擇對應的選項來啟動應用程序:
launchSettings.json 文件用于設置在 Visual Stuido 運行應用程序的環(huán)境。我們也可以添加節(jié)點,該節(jié)點名稱會自動添加到 Visual Stuido 調(diào)試按鈕的下拉選項中。
現(xiàn)在我們來詳細說一下這些屬性的詳細信息:
{ "iisSettings": { "windowsAuthentication": false,//啟用Windows身份驗證 "anonymousAuthentication": true,//啟用匿名身份驗證 "iisExpress": { "applicationUrl": "http://localhost:22437/",//應用啟動的Url路徑。 "sslPort": 44355//啟用SSL的端口 } }, "profiles": { "IIS Express": { "commandName": "IISExpress", "commandLineArgs": "", //傳遞命令的參數(shù) "workingDirectory": "", //設置命令的工作目錄 "launchBrowser": true, //是否在瀏覽器中啟動 "launchUrl": "1111", //在瀏覽器中啟動的相對URL "environmentVariables": { //將環(huán)境變量設置為鍵/值對 "ASPNETCORE_ENVIRONMENT": "Development" } } } }
要獲取其它更多屬性的詳細信息,請轉(zhuǎn)到此鏈接:h t t p : // j so n . s ch e ma s t o re . o r g/ l a u nc h s et t in g s 。
通過這個標簽,應用程序當根據(jù)當前運行的環(huán)境修改MVC視圖的結(jié)構。在示例項目中_Layout.cshtml文件生成的默認代碼:
在這個示例中,當在開發(fā)模式下運行應用程序時,我們使用本地的Bootstrap文件和自定義css文件;但是如果在預演和生產(chǎn)環(huán)境中運行,我們則使用ASP.NET內(nèi)容分發(fā)網(wǎng)絡(CDN)上的文件副本和經(jīng)過壓縮過的自定義樣式。通過這種方式,我們可以提高應用程序的性能。