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. 微软官方 Github 上的 EF 示例项目 EntityFramework.Docs

    项目地址:https://github.com/aspnet/EntityFramework.Docs/tree/master/samples/core 谢谢浏览!

  2. 一些优秀的 Entity Framework 开源项目

    增加全局过滤的项目(比如:IsDeleted 字段):https://github.com/zzzprojects/EntityFramework.DynamicFilters 谢谢浏览!

  3. centos6利用cgroup冻结一个程序运行

    操作步骤: 安装cgroup服务 yum install libcgroup 配置cgroup vim /etc/cgconfig.conf group stopit{ #添加一个cgroup组 fr ...

  4. 使用Charles进行HTTPS抓包及常见问题

    在渗透过程中,需要对每一个参数,每一个接口,每一个业务逻辑构建测试用例,为此,抓包分析是必不可少的一个过程.在PC端,Burpsuite成为了渗透必备的神器,然而,使用Burpsuite有时候抓取不到 ...

  5. kali渗透综合靶机(十四)--g0rmint靶机

    kali渗透综合靶机(十四)--g0rmint靶机 靶机下载地址:https://www.vulnhub.com/entry/g0rmint-1,214/ 一.主机发现 1.netdiscover - ...

  6. 使用SolrJ(即java客户端)开发Solr。

    1.什么是SolrJ呢? 答:Solrj是访问Solr服务的java客户端,提供索引和搜索的请求方法,SolrJ通常在嵌入在业务系统中,通过SolrJ的API接口操作Solr服务.开始配置schema ...

  7. C# 调用腾讯即时通信 IM

    IM SDK API 概述 https://cloud.tencent.com/document/product/269/33543 /// <summary> /// IM SDK 初始 ...

  8. pyqt5学习

    详细设计追函数报告生成 界面大致如下: 部分UI代码: #!/usr/bin/env python3.7 # -*- coding:utf-8 -*- # Author: Lancer 2019-09 ...

  9. mask-rcnn代码解读(六):resize_image()函数的解析

    我已经根据resize_image()函数的解析对原图像与resize图像进行了解析, 若有读者想对原图像与目标图像不同尺寸验证,可根据以下代码,调整函数参数, 其细节如下: import cv2 a ...

  10. 十一:外观模式详解(Service,action与dao)

    定义:外观模式是软件工程中常用的一种软件设计模式.它为子系统中的一组接口提供一个统一的高层接口.这一接口使得子系统更加容易使用. 该定义引自百度百科,它的表现很简单,将一系列子接口的功能进行整理,从而 ...