Asp.Net Core 中的环境变量

软件开发环境在大多数软件开发组织中,我们通常具有以下开发环境。

  • 开发环境--Development
  • 演示(模拟、临时)环境--Staging
  • 生产环境-- Production

为什么我们需要不同的开发环境,如开发,演示,生产等等环境。

**开发环境:**我们的软件开发人员通常将此环境用于我们的日常开发工作。我们希望在开发环境中加载非缩小的 JavaScript 和 CSS 文件,以便于调试。类似地,如果存在未处理的异常,我们需要开发人员异常页面,以便我们可以理解异常的根本原因并在需要时进行修复。

**演示环境:**许多组织或者公司尝试使其演示环境尽可能与实际生产环境保持一致。此环境的主要原因是识别任何与部署相关的问题。此外,如果您正在开发 B2B(企业对企业)应用程序,您可能正在与其他服务提供商系统连接。许多组织通常设置其临时环境以与服务提供商进行交互,以进行完整的端到端测试。 我们通常不会在演示环境中进行故障排除和调试,同时为了获得更好的性能,我们需要加载缩小的 JavaScript 和 CSS 文件。 如果存在未处理的异常,则显示用户友好的错误页面而不是开发人员异常页面。用户友好的错误页面不包含任何技术细节。它包含如下通用消息   :“出现问题,请使用下面的联系方式发送电子邮件,聊天或致电我们的应用程序支持”

**生产环境:**我们用于日常业务的实际环境。应配置生产环境以获得最大的安全性和性能。因此,加载缩小的 JavaScript 和 CSS 文件以提高性能。为了更好的安全性,请显示用户友好错误页面而不是开发人员异常页面。Developer Exception 页面上的技术细节对最终用户没有意义,恶意用户可以使用它们进入您的应用程序。

配置 ASPNETCORE_ENVIRONMENT 变量

使用此变量为应用程序设置环境。在我们的本地开发机器上,我们通常在launchsettings.json文件中设置此环境变量。如果需要,我们也可以在操作系统中进行设置。在 Windows 操作系统上进行设置

  1. 打开 Windows 控制面板
  2. 在“控制面板”窗口中,在右上角的“搜索控制面板”文本框中键入“环境”
  3. 单击“编辑系统环境变量”链接
  1. 在弹出的“系统属性”窗口中,单击“环境变量”按钮

  1. 在弹出的“环境变量”窗口中,单击“系统变量”部分下的“ 新建”按钮
  2. 在 弹出的“新建系统变量”窗口中,在 “变量名称”文本框中输入值ASPNETCORE_ENVIRONMENT,. 在“变量值”文本框中输入Development
  1. 单击“确定”关闭所有弹出窗口

stagingproduction环境中,我们通常在操作系统中设置此环境变量。 我们通常将此变量设置为以下值之一,具体取决于托管和运行应用程序的环境:

  • Development
  • Staging
  • Production

访问ASPNETCORE_ENVIRONMENT变量值

开箱即用,ASP.NET Core 提供了 IHostingEnvironment 服务,我们可以使用它来访问 ASPNETCORE_ENVIRONMENT 变量值。 看一下我们一直在使用的示例应用程序,注意 Startup.cs 文件中的 Configure()方法。 IHostingEnvironment 服务已经注入到此方法。 现在修改 Configure()方法中的代码,如下所示。 注意,我们使用IHostingEnvironment服务的 EnvironmentName 属性来访问环境名称。


public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.UseStaticFiles(); app.Run(async (context) =>
{
await context.Response.WriteAsync("Hosting Environment: " + env.EnvironmentName);
});
}

C#

如果在两个位置(即 launchsettings.json 文件和操作系统中)都设置了环境变量,则 launchsettings.json 文件中的值将覆盖操作系统级别指定的值。

请注意:如果您的操作系统设置的环境没有生效,请重新启动 Visual Studio 试试。

如果我们没有明确设置ASPNETCORE_ENVIRONMENT变量,则默认为生产。这样做是为了更好的安全性和性能。

想象一下,在生产服务器上,我们忘记将ASPNETCORE_ENVIRONMENT变量设置为 Production。如果默认值为Development,则应用程序可能会显示Developer Exception Page,并且恶意用户可能利用它来入侵您的应用程序。

此外,他加载非缩小的文件,而不是加载压缩后的 JavaScript 和 CSS 文件。因此,为了获得更好的性能和安全性,如果我们没有明确设置ASPNETCORE_ENVIRONMENT变量,则默认为 Production 值。

IHostingEnvironment 服务的中常用的方法介绍:

使用 IHostingEnvironment 服务的以下方法来标识运行应用程序的环境。

  • IsDevelopment()
  • IsStaging()
  • IsProduction()

如果您拥有 UAT(用户验收测试)或 QA(质量保证)环境等自定义环境,该怎么办?

开发环境(development)、集成环境(integration)、测试环境(testing)、QA 验证,模拟环境(staging)、生产环境(production)。

那么,ASP.NET Core 也支持这些自定义环境。例如,要检查环境是否为 UAT,请使用 IsEnvironment()方法,如下所示。 env.IsEnvironment(“UAT”)

//如果环境是Development serve Developer Exception Page
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//else提供具有应用程序支持的用户友好错误页面联系信息
else if (env.IsStaging() || env.IsProduction() || env.IsEnvironment("UAT")){
app.UseExceptionHandler("/Error");
}

C#

Tag Helpers 是 ASP.NET Core 中的新功能。在一个 Razor 视图里面,也可以在.CSHTML 页面中进行使用,称为环境标记助手。

此环境标记帮助程序支持根据ASPNETCORE_ENVIRONMENT变量的值呈现不同的内容。在我们学习本课程并为我们的应用程序创建模型,视图和控制器时,我们将详细讨论 Tag Helpers,包括环境标记助手(Environment Tag Helper)。

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

Asp.Net Core 中的环境变量的更多相关文章

  1. (10)ASP.NET Core 中的环境(Environments:dev, stage, prod)

    1.环境变量配置 ASP.NET Core在应用程序启动时读取环境变量(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,并将该值存储在IHo ...

  2. ASP.NET Core 从 gitlab-ci 环境变量读取配置

    最近在加强持续集成,遇到一个场景需要通过 gitlab-ci 环境变量(Settings -> Settings -> CI/CD -> Variables )在持续集成时向 ASP ...

  3. 第九节:ASP.NET Core 中多环境的使用

    一. 环境相关配置 1. 说明 ASP.NET Core 在应用启动时读取环境变量 ASPNETCORE_ENVIRONMENT, ASPNETCORE_ENVIRONMENT 可设置为任意值,但框架 ...

  4. ASP.NET Core中使用GraphQL - 第五章 字段, 参数, 变量

    ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 ASP ...

  5. ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作

    前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据.分布式系统中经常会使用到Zookeeper,它是微服务.分布式系统中必不可少的分 ...

  6. Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持

    Jexus 是一款运行于 Linux 平台,以支持  ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...

  7. 在 ASP.NET Core 中集成 Skywalking APM

    前言 大家好,今天给大家介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同学可能会 APM ...

  8. asp.net core 系列 9 环境(Development、Staging 、Production)

    一.在asp.net core中使用多个环境 ASP.NET Core 配置是基于运行时环境, 使用环境变量.ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONME ...

  9. [翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置

    [翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置 原文: USING CONSUL FOR STORING THE CONFIGURATION IN ASP.NET COR ...

随机推荐

  1. [MFC]_在vs2019中使用MFC快速构建简单windows窗口程序

    微软基础类库(英语: Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发 ...

  2. Map映射如何使用迭代器?

    迭代器只针对集合类型的数据,因此map类型的必须先转换成集合类型才能使用迭代器去获取元素. 1.在map中虽然不能直接实例化迭代器,但map集合提供了keySet()方法和value()方法,可以通过 ...

  3. Oracle 查询(SELECT)语句(一)

    Ø  简介 本文介绍 Oracle 中查询(SELECT)语句的使用,在 SQL 中 SELECT 语句是相对内容较多的,也是相对比较复杂一点的,所以这里拿出来单独学习. 首先,我们先来理一下思路,我 ...

  4. Neo4j 第十一篇:Cypher函数

    Cypher函数是对图进行查询和操作的重要工具. 一,谓词函数 谓词函数返回true或者false,主要用于检查是否存在或满足特定的条件. 1,Exists 如果指定的模式存在于图中,或者特定的属性存 ...

  5. 5种IO模型、阻塞IO和非阻塞IO、同步IO和异步IO

    POSIX 同步IO.异步IO.阻塞IO.非阻塞IO,这几个词常见于各种各样的与网络相关的文章之中,往往不同上下文中它们的意思是不一样的,以致于我在很长一段时间对此感到困惑,所以想写一篇文章整理一下. ...

  6. C# iText split PDF C# 拆分PDF

    Nuget install iText7 using iText.Kernel.Pdf; using System.Linq; using System.Text; using System.Thre ...

  7. 从VisualStudio资源文件看.NET资源处理

    c# 工程里面,经常会添加资源文件. 作用: 一处文本多个地方的UI使用,最好把文本抽成资源,多处调用使用一处资源. 多语言版本支持,一份代码支持多国语言.配置多国语言的资源文件,调用处引用资源. 例 ...

  8. ASP.NET 中关GridView里加入CheckBox 在后台获取不到选中状态的问题

    <!-- 在GridView里添加CheckBox选择控件 !--> <ItemTemplate> <asp:CheckBox ID="CheckBox&quo ...

  9. 利用Chrome开发者工具功能进行网页整页截图的方法

    第一步:打开chrome开发者工具. 打开你想截图的网页,然后按下 F12(macOS 是 option + command + i)调出开发者工具,接着按「Ctrl + Shift + P」(mac ...

  10. Linux用户和权限——用户和用户组管理

    Linux用户和权限——用户和用户组管理 摘要:本文主要介绍了Linux系统中的用户和用户组管理. 用户和用户组 含义 在使用Linux系统时,虽然输入的是自己的用户名和密码,但其实Linux并不认识 ...