ASP.NET Core中的環(huán)境配置
1.環(huán)境變量配置
ASP.NET Core在應用程序啟動時讀取環(huán)境變量(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,并將該值存儲在IHostingEnvironment.EnvironmentName中。ASPNETCORE_ENVIRONMENT可設置為任意值,但框架只支持三個值:Development(開發(fā))、Staging (分階段)和 Production(生產)。如果未設置ASPNETCORE_ENVIRONMENT,則默認為 Production。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
if (env.IsProduction() || env.IsStaging() || env.IsEnvironment("Staging_2"))
{
app.UseExceptionHandler("/Error");
}
}Properties/launchSettings.json里面的配置如下:

- 當ASPNETCORE_ENVIRONMENT設置為Development時,調用UseDeveloperExceptionPage。
- 當ASPNETCORE_ENVIRONMENT設置為Staging、Production時,調用UseExceptionHandler。
2.開發(fā)環(huán)境配置
開發(fā)環(huán)境可以啟用不應該在生產中公開的功能。例如,只在開發(fā)環(huán)境中啟用了開發(fā)人員異常頁。本地計算機開發(fā)環(huán)境可以在項目的Properties\launchSettings.json文件中設置。在 launchSettings.json中設置的環(huán)境值替代在系統(tǒng)環(huán)境中設置的值。以下 launchSettings.json 文件中顯示的三個配置文件:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:54339/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_My_Environment": "1",
"ASPNETCORE_DETAILEDERRORS": "1",
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"EnvironmentsSample": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Production"
},
"applicationUrl": "http://localhost:54340;http://localhost:54341"
},
"Kestrel Staging": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_My_Environment": "1",
"ASPNETCORE_DETAILEDERRORS": "1",
"ASPNETCORE_ENVIRONMENT": "Staging"
},
"applicationUrl": "http://localhost:51997/"
}
}
}使用dotnet run啟動應用時,會使用具有"commandName": "IISExpress"的第一個配置文件。commandName的值是指定要啟動的Web服務器。而launchSettings.json中的applicationUrl屬性也可指定服務器URL的列表。 在列表中的URL之間使用分號,如上述環(huán)境配置中EnvironmentsSample里面的applicationUrl屬性值配置。Visual Studio項目屬性“調試”選項卡中也提供了GUI來編輯launchSettings.json文件:

在Web服務器重新啟動之前,對項目配置文件所做的更改可能不會生效。必須重新啟動 Kestrel才能檢測到對環(huán)境配置所做的更改。
現(xiàn)在我們來驗證開發(fā)環(huán)境中啟用了開發(fā)人員異常頁示例,首先調試啟動第一個配置文件(IISExpress):


3.生產環(huán)境配置
Production環(huán)境應配置為最大限度地提高安全性、性能和應用可靠性。不同于開發(fā)的一些通用設置包括:
- 緩存。
- 客戶端資源被捆綁和縮小,并可能從CDN(網絡分發(fā))提供。
- 已禁用診斷錯誤頁。
- 已啟用友好錯誤頁。
- 已啟用生產記錄和監(jiān)視。例如,Application Insights。
現(xiàn)在我們來驗證生產環(huán)境中啟用了友好錯誤頁示例,首先調試啟動第二個配置文件(EnvironmentsSample):


4.基于環(huán)境配置的Startup類和方法
當ASP.NET Core應用程序啟動時,應用程序可以為不同的環(huán)境單獨定義Startup類(例如,StartupDevelopment),對應Startup類會在運行時進行選擇環(huán)境配置。優(yōu)先考慮名稱后綴與當前環(huán)境相匹配的Startup類。如果找不到匹配的Startup{EnvironmentName},就會使用原始的Startup類。若要實現(xiàn)基于環(huán)境的Startup類,請為使用中的每個環(huán)境創(chuàng)建Startup{EnvironmentName} 類:
public class StartupDevelopment
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
}
public class StartupProduction
{
public void ConfigureServices(IServiceCollection services)
{
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
}
}使用接受程序集名稱的UseStartup(IWebHostBuilder, String) 進行重載:
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
var assemblyName = typeof(Startup).GetTypeInfo().Assembly.FullName;
return WebHost.CreateDefaultBuilder(args)
.UseStartup(assemblyName);
}
}通過調試啟動第二個配置文件(EnvironmentsSample)看看效果:

因為調試啟動第二個配置文件(EnvironmentsSample)的生產(Production)環(huán)境,所以Startup類會在運行選擇時會針對當前環(huán)境配置找到對應Startup類并加載。
到此這篇關于ASP.NET Core環(huán)境配置的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
.NET?Core使用CZGL.SystemInfo庫獲取主機運行資源
這篇文章介紹了.NET?Core使用CZGL.SystemInfo庫獲取主機運行資源的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01
C#委托方法Func()中GetInvocationList()方法的用法介紹
這篇文章介紹了C#委托方法Func()中GetInvocationList()方法的用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-01-01
通過VS中的數據源選擇對話框簡單實現(xiàn)數據庫連接配置
通過VS中的數據源選擇對話框簡單實現(xiàn)數據庫連接配置...2007-02-02
SQL Server 2005安裝過程中出現(xiàn)錯誤的解決辦法
SQL Server 2005安裝過程中出現(xiàn)錯誤的解決辦法...2007-02-02

