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. Pencil 基于Electron的GUI原型工具之菜单再探

    为什么要重试呢? 主要是觉得Pencil这个工具还是比较有价值.就像Linus对Linux下分发版的态度"让用户有选择"一样,在现在这个Sass服务.Web服务化越来越普遍越便利的 ...

  2. 解决 Ubuntu16.04 + opencv4.1 源码编译错误 Makefile:160: recipe for target 'all' failed

    最近源码编译 opencv,出现下面的错误 [ %] Built target opencv_dnn Makefile:: recipe for target 'all' failed google ...

  3. 大话设计模式Python实现-状态模式

    状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 下面是一个状态模式的demo: #!/usr/bin/env python # -*- ...

  4. 【大数据】SparkSql 连接查询中的谓词下推处理 (二)

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/II48YxGfoursKVvdAXYbVg作者:李勇 目录:1.左表 join 后条件下推2.左表j ...

  5. .NET Core 学习笔记

    1. System.Composition – Using Import Attributes 截图: 2. System.Composition – Using Reflection 截图: 以后会 ...

  6. Java8新特性——StreamAPI 的使用

    StreamAPI的说明 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一个则是 Stream API. Stream API ( java.util.stream) 把真正的 ...

  7. vsdbg 下载方法 使用下载工具下载后手动安装

    vsdbg国内下载太慢了,这里提供一个使用下载工具下载后,手动安装的处理方法 查看vs build控制台输出: 1>C:\WINDOWS\System32\WindowsPowerShell\v ...

  8. aspx.designer.cs没有自动生成代码(没有自动注册)

    遇到这个问题的最大可能是:aspx页面存在bug. 比如说我的主页是从项目里的别的页面复制过来的,但是少复制了一些引用,页面就存在bug,导致aspx.designer.cs没有自动生成代码. 解决方 ...

  9. TinyMCE编辑器图片上传扩展(base64方式),asp.net mvc5

    编辑器上传图片一般都是先上传到服务器中,若是用户取消或忘记提交表单就产生一张废图在空间里面,时间一长就产生大量占用空间的无用图片,现在就试试提交前先用base64,提交后,在后台处理编辑器内容中的&l ...

  10. jenkins安装后提示localhost 拒绝了我们的连接请求。

    我是用msi文件安装的windows本地 ,安装文件看另外安装的博文. 此问题解决不是第一次安装方案 ,而是第一次安装完,使用也正常,关电脑再次访问的时候提示找不到 ,是因为本地服务没有启动  ,wi ...