https://www.jb51.net/article/117759.htm
在這一部分內容中,我們來討論ASP.NET Core中的一個新功能:環境變量和啟動設置,它將開發過程中的調試和測試變的更加簡單。我們只需要簡單的修改配置文件,就可以實現開發、預演、生產環境的切換。
ASPNETCORE_ENVIRONMENT
ASP.NET Core控制環境切換最核心的東西是“ASPNETCORE_ENVIRONMENT”環境變量,它直接控制當前應用程序運行的環境類型。您可以通過在項目上右鍵菜單選擇“屬性”選項,然后切換到“調試”標簽來修改此環境變量。
此環境變量框架默認提供了三個值,當然您也可以定義其它的值:
Development(開發)
Staging(預演)
Production(生產)
我們在Startup.cs文件中,可以使用相應的方法來控制應用程序的行為。以下是創建示例程序時Startup.cs文件生成的默認代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
// 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文件生成的默認代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
{
"iisSettings"
: {
"windowsAuthentication"
:
false
,
"anonymousAuthentication"
:
true
,
"iisExpress"
: {
"sslPort"
: 0
}
},
"profiles"
: {
"IIS Express"
: {
"commandName"
:
"IISExpress"
,
"launchBrowser"
:
true
,
"environmentVariables"
: {
"ASPNETCORE_ENVIRONMENT"
:
"Development"
}
},
"CoreWebApp"
: {
"commandName"
:
"Project"
,
"launchBrowser"
:
true
,
"environmentVariables"
: {
"ASPNETCORE_ENVIRONMENT"
:
"Development"
},
}
}
}
|
在這里,有兩個配置節點:“IIS Express”、“CoreWebApp”,這兩個節點,分別對應Visual Stuido的開始調試按鈕的下拉選項:
launchSettings.json 文件用於設置在 Visual Stuido 運行應用程序的環境。我們也可以添加節點,該節點名稱會自動添加到 Visual Stuido 調試按鈕的下拉選項中。
現在我們來詳細說一下這些屬性的詳細信息:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
{
"iisSettings"
: {
"windowsAuthentication"
:
false
,
//啟用Windows身份驗證
"anonymousAuthentication"
:
true
,
//啟用匿名身份驗證
"iisExpress"
: {
"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文件生成的默認代碼:
1
2
3
4
5
6
7
8
9
10
|
<
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中,開發者可以使用環境變量輕而易舉控制應用程序在不同的環境中的行為。使用這些功能,我們完成以下功能:
- 創建和使用自定義環境;
- 根據應用程序運行的環境啟用或禁用應用程序部分功能;
- 使用 environment 標簽修改當前環境中MVC視圖。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。