網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
1.環(huán)境變量配置
ASP.NET Core在應(yīng)用程序啟動(dòng)時(shí)讀取環(huán)境變量(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,并將該值存儲(chǔ)在IHostingEnvironment.EnvironmentName中。ASPNETCORE_ENVIRONMENT可設(shè)置為任意值,但框架只支持三個(gè)值:Development(開(kāi)發(fā))、Staging (分階段)和 Production(生產(chǎn))。如果未設(shè)置ASPNETCORE_ENVIRONMENT,則默認(rèn)為 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里面的配置如下:
- 當(dāng)ASPNETCORE_ENVIRONMENT設(shè)置為Development時(shí),調(diào)用UseDeveloperExceptionPage。
- 當(dāng)ASPNETCORE_ENVIRONMENT設(shè)置為Staging、Production時(shí),調(diào)用UseExceptionHandler。
2.開(kāi)發(fā)環(huán)境配置
開(kāi)發(fā)環(huán)境可以啟用不應(yīng)該在生產(chǎn)中公開(kāi)的功能。例如,只在開(kāi)發(fā)環(huán)境中啟用了開(kāi)發(fā)人員異常頁(yè)。本地計(jì)算機(jī)開(kāi)發(fā)環(huán)境可以在項(xiàng)目的Properties\launchSettings.json文件中設(shè)置。在 launchSettings.json中設(shè)置的環(huán)境值替代在系統(tǒng)環(huán)境中設(shè)置的值。以下 launchSettings.json 文件中顯示的三個(gè)配置文件:
{ "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啟動(dòng)應(yīng)用時(shí),會(huì)使用具有"commandName": "IISExpress"的第一個(gè)配置文件。commandName的值是指定要啟動(dòng)的Web服務(wù)器。而launchSettings.json中的applicationUrl屬性也可指定服務(wù)器URL的列表。 在列表中的URL之間使用分號(hào),如上述環(huán)境配置中EnvironmentsSample里面的applicationUrl屬性值配置。Visual Studio項(xiàng)目屬性“調(diào)試”選項(xiàng)卡中也提供了GUI來(lái)編輯launchSettings.json文件:
在Web服務(wù)器重新啟動(dòng)之前,對(duì)項(xiàng)目配置文件所做的更改可能不會(huì)生效。必須重新啟動(dòng) Kestrel才能檢測(cè)到對(duì)環(huán)境配置所做的更改。
現(xiàn)在我們來(lái)驗(yàn)證開(kāi)發(fā)環(huán)境中啟用了開(kāi)發(fā)人員異常頁(yè)示例,首先調(diào)試啟動(dòng)第一個(gè)配置文件(IISExpress):
3.生產(chǎn)環(huán)境配置
Production環(huán)境應(yīng)配置為最大限度地提高安全性、性能和應(yīng)用可靠性。不同于開(kāi)發(fā)的一些通用設(shè)置包括:
- 緩存。
- 客戶端資源被捆綁和縮小,并可能從CDN(網(wǎng)絡(luò)分發(fā))提供。
- 已禁用診斷錯(cuò)誤頁(yè)。
- 已啟用友好錯(cuò)誤頁(yè)。
- 已啟用生產(chǎn)記錄和監(jiān)視。例如,Application Insights。
現(xiàn)在我們來(lái)驗(yàn)證生產(chǎn)環(huán)境中啟用了友好錯(cuò)誤頁(yè)示例,首先調(diào)試啟動(dòng)第二個(gè)配置文件(EnvironmentsSample):
4.基于環(huán)境配置的Startup類(lèi)和方法
當(dāng)ASP.NET Core應(yīng)用程序啟動(dòng)時(shí),應(yīng)用程序可以為不同的環(huán)境單獨(dú)定義Startup類(lèi)(例如,StartupDevelopment),對(duì)應(yīng)Startup類(lèi)會(huì)在運(yùn)行時(shí)進(jìn)行選擇環(huán)境配置。優(yōu)先考慮名稱后綴與當(dāng)前環(huán)境相匹配的Startup類(lèi)。如果找不到匹配的Startup{EnvironmentName},就會(huì)使用原始的Startup類(lèi)。若要實(shí)現(xiàn)基于環(huán)境的Startup類(lèi),請(qǐng)為使用中的每個(gè)環(huán)境創(chuàng)建Startup{EnvironmentName} 類(lèi):
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) 進(jìn)行重載:
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); } }
通過(guò)調(diào)試啟動(dòng)第二個(gè)配置文件(EnvironmentsSample)看看效果:
因?yàn)檎{(diào)試啟動(dòng)第二個(gè)配置文件(EnvironmentsSample)的生產(chǎn)(Production)環(huán)境,所以Startup類(lèi)會(huì)在運(yùn)行選擇時(shí)會(huì)針對(duì)當(dāng)前環(huán)境配置找到對(duì)應(yīng)Startup類(lèi)并加載。
原文鏈接:https://www.cnblogs.com/wzk153/p/11004125.html
相關(guān)推薦
- 2022-03-28 用python實(shí)現(xiàn)一個(gè)文件搜索工具_(dá)python
- 2023-05-31 Pandas中map(),applymap(),apply()函數(shù)的使用方法_python
- 2022-04-09 使用docker-compose一鍵部署開(kāi)源博客wordpress
- 2022-06-16 Kotlin操作符重載實(shí)例詳解_Android
- 2022-07-06 安裝pytorch報(bào)錯(cuò)torch.cuda.is_available()=false問(wèn)題的解決過(guò)程_
- 2022-08-19 Go語(yǔ)言fsnotify接口實(shí)現(xiàn)監(jiān)測(cè)文件修改_Golang
- 2022-01-27 laravel的服務(wù)注入新增service層,多方式
- 2022-05-11 continue,return,break的區(qū)別
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支