Asp.Net Core 中的环境变量
Asp.Net Core 中的环境变量
软件开发环境在大多数软件开发组织中,我们通常具有以下开发环境。
- 开发环境--Development
- 演示(模拟、临时)环境--Staging
- 生产环境-- Production
为什么我们需要不同的开发环境,如开发,演示,生产等等环境。
**开发环境:**我们的软件开发人员通常将此环境用于我们的日常开发工作。我们希望在开发环境中加载非缩小的 JavaScript 和 CSS 文件,以便于调试。类似地,如果存在未处理的异常,我们需要开发人员异常页面,以便我们可以理解异常的根本原因并在需要时进行修复。
**演示环境:**许多组织或者公司尝试使其演示环境尽可能与实际生产环境保持一致。此环境的主要原因是识别任何与部署相关的问题。此外,如果您正在开发 B2B(企业对企业)应用程序,您可能正在与其他服务提供商系统连接。许多组织通常设置其临时环境以与服务提供商进行交互,以进行完整的端到端测试。 我们通常不会在演示环境中进行故障排除和调试,同时为了获得更好的性能,我们需要加载缩小的 JavaScript 和 CSS 文件。 如果存在未处理的异常,则显示用户友好的错误页面而不是开发人员异常页面。用户友好的错误页面不包含任何技术细节。它包含如下通用消息 :“出现问题,请使用下面的联系方式发送电子邮件,聊天或致电我们的应用程序支持”
**生产环境:**我们用于日常业务的实际环境。应配置生产环境以获得最大的安全性和性能。因此,加载缩小的 JavaScript 和 CSS 文件以提高性能。为了更好的安全性,请显示用户友好错误页面而不是开发人员异常页面。Developer Exception 页面上的技术细节对最终用户没有意义,恶意用户可以使用它们进入您的应用程序。
配置 ASPNETCORE_ENVIRONMENT 变量
使用此变量为应用程序设置环境。在我们的本地开发机器上,我们通常在launchsettings.json文件中设置此环境变量。如果需要,我们也可以在操作系统中进行设置。在 Windows 操作系统上进行设置
- 打开 Windows 控制面板
- 在“控制面板”窗口中,在右上角的“搜索控制面板”文本框中键入“环境”
- 单击“编辑系统环境变量”链接
- 在弹出的“系统属性”窗口中,单击“环境变量”按钮
- 在弹出的“环境变量”窗口中,单击“系统变量”部分下的“ 新建”按钮
- 在 弹出的“新建系统变量”窗口中,在 “变量名称”文本框中输入值ASPNETCORE_ENVIRONMENT,. 在“变量值”文本框中输入Development
- 单击“确定”关闭所有弹出窗口
在staging
或production
环境中,我们通常在操作系统中设置此环境变量。 我们通常将此变量设置为以下值之一,具体取决于托管和运行应用程序的环境:
- 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 中的环境变量的更多相关文章
- (10)ASP.NET Core 中的环境(Environments:dev, stage, prod)
1.环境变量配置 ASP.NET Core在应用程序启动时读取环境变量(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,并将该值存储在IHo ...
- ASP.NET Core 从 gitlab-ci 环境变量读取配置
最近在加强持续集成,遇到一个场景需要通过 gitlab-ci 环境变量(Settings -> Settings -> CI/CD -> Variables )在持续集成时向 ASP ...
- 第九节:ASP.NET Core 中多环境的使用
一. 环境相关配置 1. 说明 ASP.NET Core 在应用启动时读取环境变量 ASPNETCORE_ENVIRONMENT, ASPNETCORE_ENVIRONMENT 可设置为任意值,但框架 ...
- ASP.NET Core中使用GraphQL - 第五章 字段, 参数, 变量
ASP.NET Core中使用GraphQL ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间件 ASP ...
- ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作
前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据.分布式系统中经常会使用到Zookeeper,它是微服务.分布式系统中必不可少的分 ...
- Jexus 5.8.2 正式发布为Asp.Net Core进入生产环境提供平台支持
Jexus 是一款运行于 Linux 平台,以支持 ASP.NET.PHP 为特色的集高安全性和高性能为一体的 WEB 服务器和反向代理服务器.最新版 5.8.2 已经发布,有如下更新: 1,现在大 ...
- 在 ASP.NET Core 中集成 Skywalking APM
前言 大家好,今天给大家介绍一下如何在 ASP.NET Core 项目中集成 Skywalking,Skywalking 是 Apache 基金会下面的一个开源 APM 项目,有些同学可能会 APM ...
- asp.net core 系列 9 环境(Development、Staging 、Production)
一.在asp.net core中使用多个环境 ASP.NET Core 配置是基于运行时环境, 使用环境变量.ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONME ...
- [翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置
[翻译] 如何在 ASP.Net Core 中使用 Consul 来存储配置 原文: USING CONSUL FOR STORING THE CONFIGURATION IN ASP.NET COR ...
随机推荐
- 算法六Z自形变换
将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C ...
- React服务器端渲染框架next.js项目实战及部署上下文context问题解决办法
在前段时间折腾过搭建react服务器端项目架构,点击这里了解下,正好最近有个重构PC网站的需求,考虑SEO等因素.在做技术选型的时候决定采用nextjs.项目开发过程中,nextjs的体验非常棒,个人 ...
- jQuery 源码分析(一) 代码结构
jQuery是一个Javascript库,它支持链式操作方式,即对发生在同一个JQuery对象上的一组动作,可以直接接连写无需要重复获取对象.这一特点使得JQuery的代码无比优雅,而且有强大的选择器 ...
- POJ-1129 DFS染色+四色原理的应用
OJ-ID: POJ-1129 author: Caution_X date of submission: 20190927 tags: DFS+四色原理的应用 descri ...
- [线段树]Luogu P3372 线段树 1【模板】
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #d ...
- ASP.NET web.config 配置里部分参数详细说明
Session配置 <!-- <identity impersonate = "false" [true|false] userName = "" ...
- CentOS安装etcd和flannel实现Docker跨物理机通信
1.安装etcd yum install etcd systemctl stop etcd systemctl start etcd systemctl status etcd systemctl e ...
- WPF-介绍一款能够自动格式化XAML界面代码的的插件
因为之前有小伙伴问格式化XAMl的快捷键按钮,所以在这里分享一款格式化XAMl的插件,非常好用. 直接在工具-->扩展和更新里搜索XamlStyler下载安装即可. 安装后按CTRL+S保存后就 ...
- RSA加密方法
/// <summary> /// RSA加密 /// </summary> /// <param name="dat ...
- Log4基本配置
前言:作为一个程序员你要学会调试,对于一种调试都无法找到问题所在的情况,你要学会看日志,要学会看日志你的学会怎么样去写入日志,接下来教你配置C#Log4 第一步,你的在配置文件中配置好对应的参数 &l ...