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在不同环境中的处理的更多相关文章

  1. Asp.net Core Startup Class中是如何获取配置信息的

    默认的网站构建方式 VS2015新建asp.net core项目,项目建立完成后,有两个文件,Program.cs和Startup.cs. public class Program { public ...

  2. 在ASP.NET Core的startup类中如何使用MemoryCache

    问: 下面的代码,在ASP.NET Core的startup类中创建了一个MemoryCache并且存储了三个键值“entryA”,“entryB”,“entryC”,之后想在Controller中再 ...

  3. 使用 Postman 的 Environments 和 Tests 简化在不同环境中的切换步骤

    调试 API 的时候,我们需要经常需要在本地.开发.生产来回切换,还需要面临 Token 失效等的问题,让人头大,看到一些教程有介绍用 Postman 来简化流程,但是实践起来还是遇到一些问题,所以就 ...

  4. ASP.Net Core 5.0 MVC 配置文件读取,Startup 类中ConfigureServices 方法、Configure 方法的使用

    配置文件读取 1. 新建FirstController控制器 在appsettings文件内容替换成以下代码 { "Position": { "Title": ...

  5. web项目部署在不同环境中需要修改配置文件的解决方法

    web项目部署中存在的配置文件问题: web项目以war包的形式,部署在tomcat中,同时项目需要访问一些其他的东东,例如访问数据库,调用别的项目的API.在开发中,这些需要访问的外部地址通常以配置 ...

  6. 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 ...

  7. MVC中的Startup.Auth.cs、BundleConfig.cs、FilterConfig.cs和RouteConfig.cs

    一.MVC中的Startup.Auth.cs.BundleConfig.cs.FilterConfig.cs和RouteConfig.cs四个文件在app_start中 <1>Bundle ...

  8. 【春华秋实】深入源码理解.NET Core中Startup的注册及运行

      写在前面 开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点.通过使用Startup,可以配置化处理所有向应用程序所做的请求的 ...

  9. Tomcat 8 中的startup.bat

    1. bat文件 批处理文件,在DOS和Windows(任意版本)的系统中,bat文件是可执行文件 2. startup.bat 中涉及的bat语法 2.1 @. echo. echo off @ec ...

随机推荐

  1. 判断Array/Object

    Object.prototype.isPrototypeOf()  /  Array.prototype.isPrototypeOf()if(typeof items === "object ...

  2. Linux下Memcache服务器端的安装

    最近在研究怎么让Discuz!去应用Memcache去做一些事情,记录下Memcache安装的过程. Linux下Memcache服务器端的安装服务器端主要是安装memcache服务器端,目前的最新版 ...

  3. Linux时间戳转换成BCD码(转载)

    #include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> / ...

  4. React 和 Redux 结合 1

    React依赖: "devDependencies": { "babel-core": "^6.26.0", "babel-loa ...

  5. [转] External(and Live) snapshots with libvirt

    http://kashyapc.com/ Raw image is a blob of data exposed directly in VM as block device, it can't sn ...

  6. JSP Ueditor 实现图片跨域上传

    Ueditor的单图上传,在官方文档上明确写了不支持 然后通过百度找了许多方案,终于有一个可以解决了. http://www.cnblogs.com/hpnet/p/6290452.html 不过那个 ...

  7. JavaScript工作体系中不可或缺的函数

    一.函数的概念 日常生活中,我们要完成一件事,总是习惯先有一个计划,后期按照计划,一步一步执行,则能够完成,并且达到一定效果实现一定的功能.在编程的世界里,“功能”可称呼为“函数”,因此“函数”即一段 ...

  8. 数字音频处理的瑞士军刀sox的音效算法以及用法

    SoX可以明确的写出需要的音频处理的效果,可以方便的重复使用,在目前的条件下是一个比较方便使用的项目.不过相信随着Audacity的发展,很有可能在未来可以逐渐替代SoX的功能. 对于SoX主要关心的 ...

  9. Django--缓存设置

    Django缓存机制 一. 缓存介绍 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中 ...

  10. Git学习系列之如何正确且高效地将本地项目上传到Github(图文详解)

    不多说,直接上干货! 首先你需要一个Github账号,所以还没有的话先去注册吧! https://github.com/ 见 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件 ...