Startup在不同环境中的处理
ASP.NET Core引进了在多种环境中对控制应用程序行为的进一步支持,例如开发环境(Development Environment)、预发布环境(Staging Environment),和生产环境(Production Environment)。环境变量(ASPNETCORE_ENVIRONMENT)被用来指示程序在哪个环境中运行,允许程序被正确的配置。
一、运行环境
开发环境(Development):当开发程序时使用。
预发布环境(Staging):按照惯例,Staging环境是预生产环境,用于发布到产品环境前的最终测试。
产品环境(Production):是正在运行并被终端用户使用的环境。这个环境应该配置成最大程度的安全、高效和鲁棒性。
二、环境变量(ASPNETCORE_ENVIRONMENT)
ASP.NET Core使用一个特殊的环境变量——ASPNETCORE_ENVIRONMEN来描述应用程序当前运行的环境。这个变量可以设置成你任何喜欢的值,但约定俗成使用这三个值:Development、Staging和Production。你将在ASP.NET Core提供的样例和模版中找到这些值。
在Windows和macOS中,环境变量名是大小写不敏感的。不管你是把它设置成Development,或者是development,或者是DEVELOPMENT,结果都一样。然而在默认情况下,Linux是大小写敏感的。出于最佳实践的考虑,环境变量、文件名和设置(Setting)应该假定为大小写敏感。
三、设置环境变量
关于在不同环境时,如何设置环境变量,可参考微软的官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments#setting-the-environment
在开发时,我们可以在Visual Studio的设置页中直接修改环境变量(如下图所示),不需要修改系统中的设置。
这个属性页中的设置会被持久化存储到launchSettings.json这个文件中。这个文件位于项目的Properties文件夹下面。
四、根据不同的环境加载不同的Startup类
在上篇中提到程序的主方法中使用到UseStartup<TStartup>()这个方法。这个方法有多个重载,除了可以加载指定的Startup类外,还可以在指定的程序集中根据当前程序运行环境搜索特定的Startup类。搜索规则为寻找名字为"Startup{EnvironmentName}"。例如,当前程序在开发环境中运行时,这个方法就会在你指定的程序集中查找名为"StartupDevelopment"的类。
ASP.NET Core还支持这样的情况:当你在使用UseStartup<TStartup>()指定了一个固定的Startup类后,它还可以根据当前程序运行环境,加载Startup类中以这种格式 "Configure{EnvironmentName}"命名的方法。举个例子,如果程序当前的执行环境是Staging环境,就会调用在Startup类中的ConfigureStaging方法,而不再调用Configure方法。
五、总结
Startup的使用比较灵活,可以把开发、测试、生产独立的环境独立开来,可以在实际中运用起来。
六、参考
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/environments
Startup在不同环境中的处理的更多相关文章
- Asp.net Core Startup Class中是如何获取配置信息的
默认的网站构建方式 VS2015新建asp.net core项目,项目建立完成后,有两个文件,Program.cs和Startup.cs. public class Program { public ...
- 在ASP.NET Core的startup类中如何使用MemoryCache
问: 下面的代码,在ASP.NET Core的startup类中创建了一个MemoryCache并且存储了三个键值“entryA”,“entryB”,“entryC”,之后想在Controller中再 ...
- 使用 Postman 的 Environments 和 Tests 简化在不同环境中的切换步骤
调试 API 的时候,我们需要经常需要在本地.开发.生产来回切换,还需要面临 Token 失效等的问题,让人头大,看到一些教程有介绍用 Postman 来简化流程,但是实践起来还是遇到一些问题,所以就 ...
- ASP.Net Core 5.0 MVC 配置文件读取,Startup 类中ConfigureServices 方法、Configure 方法的使用
配置文件读取 1. 新建FirstController控制器 在appsettings文件内容替换成以下代码 { "Position": { "Title": ...
- web项目部署在不同环境中需要修改配置文件的解决方法
web项目部署中存在的配置文件问题: web项目以war包的形式,部署在tomcat中,同时项目需要访问一些其他的东东,例如访问数据库,调用别的项目的API.在开发中,这些需要访问的外部地址通常以配置 ...
- tomcat bin 中startup.sh中的环境变量配置
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64 JRE_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64/jre P ...
- MVC中的Startup.Auth.cs、BundleConfig.cs、FilterConfig.cs和RouteConfig.cs
一.MVC中的Startup.Auth.cs.BundleConfig.cs.FilterConfig.cs和RouteConfig.cs四个文件在app_start中 <1>Bundle ...
- 【春华秋实】深入源码理解.NET Core中Startup的注册及运行
写在前面 开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点.通过使用Startup,可以配置化处理所有向应用程序所做的请求的 ...
- Tomcat 8 中的startup.bat
1. bat文件 批处理文件,在DOS和Windows(任意版本)的系统中,bat文件是可执行文件 2. startup.bat 中涉及的bat语法 2.1 @. echo. echo off @ec ...
随机推荐
- 29.vector
对于List接口这里还介绍一个它的实现类Vector,Vector 类可以实现可增长的对象数组. Vector可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.不过,Vect ...
- 模拟poj1350
http://poj.org/problem?id=1350 题意:给你一个数,你用这个数重排序后的最大值减去最小值,当这个差值等于0或者6174时就结束,否则就用这个差值再排序再求差值.如果这个数不 ...
- ubuntu下file_get_contents返回空字符串
ubuntu下file_get_contents返回空字符串 | 浏览:302 | 更新:2014-03-30 10:11 本文起初面临的问题是PHP中SoapClient不好使,最后file_get ...
- 细说SpringDI Setter注入
依赖注入(DI)是一个过程,通过这个过程,对象可以通过构造函数参数,工厂方法的参数或者在构造或返回对象实例后设置的属性来定义它们的依赖关系从工厂方法.然后容器在创建bean时注入这些依赖关系.这个过程 ...
- TextView文字描边实现
TextView文字描边实现 需求描述 文字显示在图片的上面,图片的内容是不确定了,为了防止文字与图片的颜色相近导致用户看不到或者看不清文字的问题,所以显示文字描边,避免问题. 实现 实现思想 使用T ...
- Cannot load php5apache2_4.dll into server
配置PHP开发环境的时候,当进行到在Apache的httpd.conf文件中配置加载PHP模块时发生如下错误 httpd: Syntax error on line 185 of D:/wamp/Ap ...
- 一、activiti工作流(workflow)入门介绍
activiti官方网站(官网通常很卡,不建议看,直接看我教程就行) http://www.activiti.org/ eclipse离线安装activiti插件并下载教程 https://downl ...
- RISC-V平台的汇编指令解析
csrr a0, 0xF14 //把0xF14的值读入到a0中 andi a1, a0, 0x1f //把a0 和0x1F按位与运算后存储到a1中 srli a0, a0, 5 ...
- git提示error setting certificate verify locations以及fatal: unable to access 的解决办法
z当使用git ------上传文件到GitHub上时!~~~出现了以下错误 :fatal: unable to access ' 可以采用以下解决方式: 修改GitHub上的地址格式=====ht ...
- Python制作二维码和条形码扫描器 (pyzbar)
条码在生活中随处可见,其可分为三类:一维条码.二维条码.三维条码 一维条码: 我们平时习惯称为条形码.条形码是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常见的条 ...