ASP.NET Core環(huán)境變量配置和啟動設(shè)置講解
ASPNETCORE_ENVIRONMENT
ASP.NET Core控制環(huán)境切換最核心的東西是“ASPNETCORE_ENVIRONMENT”環(huán)境變量,它直接控制當(dāng)前應(yīng)用程序運(yùn)行的環(huán)境類型。您可以通過在項(xiàng)目上右鍵菜單選擇“屬性”選項(xiàng),然后切換到“調(diào)試”標(biāo)簽來修改此環(huán)境變量。

此環(huán)境變量框架默認(rèn)提供了三個(gè)值,當(dāng)然您也可以定義其它的值:
- Development(開發(fā))
- Staging(預(yù)演)
- Production(生產(chǎn))
我們在Startup.cs文件中,可以使用相應(yīng)的方法來控制應(yīng)用程序的行為。以下是創(chuàng)建示例程序時(shí)Startup.cs文件生成的默認(rèn)代碼:
// 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 類型的變量表示的是當(dāng)前應(yīng)用程序運(yùn)行的環(huán)境,ASP.Net Core提供了四個(gè)擴(kuò)展方法,用于檢測 “ASPNETCORE_ENVIRONMENT”當(dāng)前的值。
- IsDevelopment()
- IsStaging()
- IsProduction()
- IsEnvironment()
如果您需要檢查該應(yīng)用程序是否在特定環(huán)境中運(yùn)行,可以使用 env.IsEnvironment("environmentname") ,該方法忽略大小寫(請不要使用 env.EnvironmentName == "Development" 來檢查環(huán)境)。
過上面的代碼,我們可以知道,如果當(dāng)前是開發(fā)環(huán)境,使用UseDeveloperExceptionPage()、UseBrowserLink()方法啟用開發(fā)環(huán)境的錯(cuò)誤頁面和啟用Visual Stuido中的Browser Link功能,這些功能都有利于我們在開發(fā)過程中調(diào)試程序;但是在生產(chǎn)環(huán)境中我們不希望啟用這些功能,而是將出錯(cuò)頁面指向路徑“/Home/Error”,給用戶顯示友好的錯(cuò)誤提示。
launchSettings.json文件
ASP.Net Core包含一個(gè)launchSettings.json的新文件,您可以在項(xiàng)目中“Properties”文件夾中找到該文件:

此文件設(shè)置了Visual Studio可以啟動的不同環(huán)境,以下是示例項(xiàng)目中l(wèi)aunchSettings.json文件生成的默認(rèn)代碼:
{
"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"
}
}
}在這里,有兩個(gè)配置節(jié)點(diǎn):“IIS Express”、“CoreWebApp”,這兩個(gè)節(jié)點(diǎn),分別對應(yīng)Visual Stuido的開始調(diào)試按鈕的下拉選項(xiàng),您可以選擇對應(yīng)的選項(xiàng)來啟動應(yīng)用程序:

launchSettings.json 文件用于設(shè)置在 Visual Stuido 運(yùn)行應(yīng)用程序的環(huán)境。我們也可以添加節(jié)點(diǎn),該節(jié)點(diǎn)名稱會自動添加到 Visual Stuido 調(diào)試按鈕的下拉選項(xiàng)中。
現(xiàn)在我們來詳細(xì)說一下這些屬性的詳細(xì)信息:
{
"iisSettings": {
"windowsAuthentication": false,//啟用Windows身份驗(yàn)證
"anonymousAuthentication": true,//啟用匿名身份驗(yàn)證
"iisExpress": {
"applicationUrl": "http://localhost:22437/",//應(yīng)用啟動的Url路徑。
"sslPort": 44355//啟用SSL的端口
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"commandLineArgs": "", //傳遞命令的參數(shù)
"workingDirectory": "", //設(shè)置命令的工作目錄
"launchBrowser": true, //是否在瀏覽器中啟動
"launchUrl": "1111", //在瀏覽器中啟動的相對URL
"environmentVariables": { //將環(huán)境變量設(shè)置為鍵/值對
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}Environment 標(biāo)簽
通過這個(gè)標(biāo)簽,應(yīng)用程序當(dāng)根據(jù)當(dāng)前運(yùn)行的環(huán)境修改MVC視圖的結(jié)構(gòu)。在示例項(xiàng)目中_Layout.cshtml文件生成的默認(rè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>在這個(gè)示例中,當(dāng)在開發(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)過壓縮過的自定義樣式。通過這種方式,我們可以提高應(yīng)用程序的性能。
總結(jié)
在ASP.NET Core中,開發(fā)者可以使用環(huán)境變量輕而易舉控制應(yīng)用程序在不同的環(huán)境中的行為。使用這些功能,我們完成以下功能:
- 創(chuàng)建和使用自定義環(huán)境;
- 根據(jù)應(yīng)用程序運(yùn)行的環(huán)境啟用或禁用應(yīng)用程序部分功能;
- 使用 environment 標(biāo)簽修改當(dāng)前環(huán)境中MVC視圖。
到此這篇關(guān)于ASP.NET Core環(huán)境變量配置和啟動設(shè)置的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Asp.Net數(shù)據(jù)控件引用AspNetPager.dll分頁實(shí)現(xiàn)代碼
今天與大家分享一下“Asp.Net數(shù)據(jù)控件引用AspNetPager.dll分頁”首先聲明以下幾點(diǎn)2012-01-01
.Net MVC將Controller數(shù)據(jù)傳遞到View
這篇文章介紹了.Net MVC將Controller數(shù)據(jù)傳遞到View的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
asp.net Menu控件+SQLServer實(shí)現(xiàn)動態(tài)多級菜單
asp.net Menu控件+SQLServer實(shí)現(xiàn)動態(tài)多級菜單的代碼,需要的朋友可以參考下。2011-12-12
.Net項(xiàng)目在Docker容器中開發(fā)部署
這篇文章介紹了.Net項(xiàng)目在Docker容器中開發(fā)部署的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
ASP.NET筆記之文章發(fā)布管理小系統(tǒng)案例
本篇文章小編為大家介紹,ASP.NET筆記之文章發(fā)布管理小系統(tǒng)案例。需要的朋友參考下2013-04-04

