ASP.NET Core中使用多環(huán)境
ASP.NET Core 支持在多個(gè)環(huán)境中管理應(yīng)用程序,如開(kāi)發(fā)(Development),預(yù)演(Staging)和生產(chǎn)(Production)。環(huán)境變量用來(lái)指示應(yīng)用程序正在運(yùn)行的環(huán)境,允許應(yīng)用程序適當(dāng)?shù)嘏渲谩?/p>
1.環(huán)境變量
ASP.NET Core 引用一個(gè)特定的環(huán)境變量 ASPNETCORE_ENVIRONMENT 來(lái)描述應(yīng)用程序當(dāng)前運(yùn)行的環(huán)境。這個(gè)變量可以被設(shè)置任何值,但是有三個(gè)值被約定使用:Development(開(kāi)發(fā)),Staging(預(yù)演)和Production(生產(chǎn))。
當(dāng)前環(huán)境變量設(shè)置可以通過(guò)編程方式從應(yīng)用程序中檢測(cè)到。還可以基于當(dāng)前的應(yīng)用程序環(huán)境在view中使用 Environment tag helper 來(lái)包含某些部分。指定的環(huán)境變量名稱不區(qū)分大小寫(xiě)。
Development
開(kāi)發(fā)環(huán)境??梢栽趘s中設(shè)置,右擊項(xiàng)目,點(diǎn)擊屬性:
當(dāng)修改該項(xiàng)目創(chuàng)建的默認(rèn)設(shè)置后,會(huì)更改launchSettings.json文件。這個(gè)文件對(duì)于 vs 中每個(gè)用來(lái)啟動(dòng)應(yīng)用程序的配置文件都包含特定的設(shè)置,包括應(yīng)該使用的任何環(huán)境變量。
你也可以為應(yīng)用程序配置多個(gè)不同的啟動(dòng)配置。
Staging
Staging 環(huán)境是用于部署到生產(chǎn)環(huán)境前進(jìn)行最后測(cè)試的預(yù)生產(chǎn)環(huán)境。理論上,它的物理特征應(yīng)該時(shí)生產(chǎn)環(huán)境的真實(shí)寫(xiě)照。
Production
Production 環(huán)境是應(yīng)用程序運(yùn)行的環(huán)境。這個(gè)環(huán)境應(yīng)該被配置為最大限度提高安全性,性能和應(yīng)用程序的健壯性。還需要其他設(shè)置:
啟動(dòng)緩存
客戶端資源打包
使用正式錯(cuò)誤頁(yè)面
啟用生產(chǎn)日志和監(jiān)控
等
2.運(yùn)行時(shí)確定環(huán)境
IHostingEnvironment服務(wù)為工作環(huán)境提供了核心抽象。該服務(wù)由ASP.NET 宿主層提供,并且能夠通過(guò)DI 注入到啟動(dòng)類中。在VS 的ASP.NET Core 網(wǎng)站模板中使用這種方式加載特定的環(huán)境配置文件(如果存在的話),可以根據(jù)環(huán)境設(shè)置不同的配置。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); app.UseBrowserLink(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }
除了使用env.IsDevelopment(),也可以使用env.IsEnvironment("Development")或env.EnvironmentName == "Development"檢查運(yùn)行環(huán)境。
在開(kāi)發(fā)環(huán)境中,使用UseDeveloperExceptionPage()、UseBrowserLink()方法啟用開(kāi)發(fā)環(huán)境的錯(cuò)誤頁(yè)面和啟用Visual Stuido中的Browser Link功能,這些功能都有利于我們?cè)陂_(kāi)發(fā)過(guò)程中調(diào)試程序;但是在生產(chǎn)環(huán)境中我們不希望啟用這些功能,而是將出錯(cuò)頁(yè)面指向路徑“/Home/Error”,給用戶顯示友好的錯(cuò)誤界面。
當(dāng)在開(kāi)發(fā)模式下運(yùn)行應(yīng)用程序時(shí),我們使用本地的Bootstrap文件和自定義css文件;但是如果在預(yù)演和生產(chǎn)環(huán)境中運(yùn)行,我們則使用ASP.NET內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)上的文件副本和經(jīng)過(guò)壓縮過(guò)的自定義樣式。我們可以使用environment標(biāo)簽匹配環(huán)境:
<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" rel="external nofollow" 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>
3.啟動(dòng)公約
ASP.NET Core 支持一種基于約定的方法來(lái)根據(jù)當(dāng)前環(huán)境配置應(yīng)用程序的啟動(dòng)。
我們知道在ASP.NET Core啟動(dòng)后,Startup類來(lái)應(yīng)道應(yīng)用程序。如果命名類為Startup{EnvironmentName},當(dāng)在對(duì)應(yīng)環(huán)境下啟動(dòng)后會(huì)使用這個(gè)類。
同樣如果在Startup類中Configure和ConfigureServices方法也支持這種約定。
到此這篇關(guān)于ASP.NET Core中使用多環(huán)境的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- ASP.NET Core中的環(huán)境配置
- ASP.NET Core處理錯(cuò)誤環(huán)境
- ASP.NET Core環(huán)境變量配置和啟動(dòng)設(shè)置講解
- ASP.NET?Core開(kāi)發(fā)環(huán)境安裝配置
- ASP.NET Core快速入門(mén)之環(huán)境篇
- ASP.NET Core 配置和使用環(huán)境變量的實(shí)現(xiàn)
- ASP.NET Core環(huán)境變量和啟動(dòng)設(shè)置的配置教程
- VS2015 搭建Asp.net core開(kāi)發(fā)環(huán)境的方法
- 云服務(wù)器下搭建ASP.NET Core環(huán)境
相關(guān)文章
ASP.NET WebForm中<%=%>與<%#%>的區(qū)別
這篇文章主要介紹了ASP.NET WebForm中<%=%>與<%#%>的區(qū)別,需要的朋友可以參考下2015-01-01ASP.Net MVC_DotNetZip簡(jiǎn)單使用方法,解決文件壓縮的問(wèn)題
下面小編就為大家?guī)?lái)一篇ASP.Net MVC_DotNetZip簡(jiǎn)單使用方法,解決文件壓縮的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06Asp.net使用HttpModule壓縮并刪除空白Html請(qǐng)求的實(shí)現(xiàn)代碼
當(dāng)我們壓縮我的Response后再傳到Client端時(shí),可以明顯節(jié)省寬帶. 提升Site的性能. 現(xiàn)在的瀏覽器大部分都支持Gzip,Deflate壓縮2011-11-11SqlCommandBuilder如何實(shí)現(xiàn)批量更新
這篇文章主要介紹了SqlCommandBuilder如何實(shí)現(xiàn)批量更新,需要的朋友可以參考下2015-10-10DataView.RowFilter的使用(包括in,like等SQL中的操作符)
這篇blog轉(zhuǎn)自C# examples,對(duì)DataView.RowFilter做了詳細(xì)介紹,能像SQL中使用in,like等操作符一樣進(jìn)行過(guò)濾查詢,并附有實(shí)例,使用方便。2011-07-07asp.net簡(jiǎn)單實(shí)現(xiàn)單點(diǎn)登錄(SSO)的方法
這篇文章主要介紹了asp.net簡(jiǎn)單實(shí)現(xiàn)單點(diǎn)登錄(SSO)的方法,結(jié)合簡(jiǎn)單實(shí)例形式較為詳細(xì)的分析了單點(diǎn)登錄的原理與asp.net的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-12-12ASP.NET Core自定義本地化教程之從文本文件讀取本地化字符串
使用 ASP.NET Core 創(chuàng)建多語(yǔ)言網(wǎng)站,可讓網(wǎng)站擁有更多受眾。下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core自定義本地化教程之從文本文件讀取本地化字符串的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09樹(shù)莓派ASP.NET環(huán)境配置過(guò)程詳解
這篇文章主要介紹了樹(shù)莓派ASP.NET環(huán)境配置,本篇文章內(nèi)容是根據(jù)mono官網(wǎng)上查閱的配置教程所寫(xiě),需要的朋友可以參考下2022-04-04