在ASP.NET Core中使用多环境
ASP.NET Core支持在运行时设置应用程序环境变量
ASP.NET Core在启动时读取环境变量ASPNETCORE_ENVIRONMENT,存储在IHostingEnvironment.EnvironmentName.
ASPNETCORE_ENVIRONMENT 可以设置为任意值,但是在框架内预设的三个值 Development 开发, Staging 预发布 ,Production 产品 ;如果环境变量未设置,默认值是Production产品
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
} if (env.IsProduction() || env.IsStaging() || env.IsEnvironment("Staging_2"))
{
app.UseExceptionHandler("/Error");
} app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
}
上面的代码:
在开发模式下,使用开发异常页,提供更加详细的异常页 和启用浏览器链接
在产品、预发布、预发布2模式下,在使用ExceptionHandlerMiddleware异常处理中间件
使用 Environment Tag Helper 使用IHostingEnvironment.EnvironmentName的值来包含和排除html元素,一般根据开发和产品环境不同,来包含和排除脚本和样式:
@page
@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment hostingEnv
@model AboutModel
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@Model.Message</h3> <p> ASPNETCORE_ENVIRONMENT = @hostingEnv.EnvironmentName</p> <environment include="Development">
<div><environment include="Development"></div>
</environment>
<environment exclude="Development">
<div><environment exclude="Development"></div>
</environment>
<environment include="Staging,Development,Staging_2">
<div>
<environment include="Staging,Development,Staging_2">
</div>
</environment>
提示:在Windows和macOS下变量和值是不区分大小写的。默认情况下,Linux 环境下变量和值是区分大小写的。
所以默认情况下使用HostingEnvironmentExtensions 下的
| IsDevelopment(IHostingEnvironment) |
Checks if the current hosting environment name is Development. |
| IsEnvironment(IHostingEnvironment, String) |
Compares the current hosting environment name against the specified value. |
| IsProduction(IHostingEnvironment) |
Checks if the current hosting environment name is Production. |
| IsStaging(IHostingEnvironment) |
Checks if the current hosting environment name is Staging. |
方法判断环境变量的值,其内部使用的是StringComparison.OrdinalIgnoreCase 不区分大小写来判断相等的
public static bool IsEnvironment(this IHostingEnvironment hostingEnvironment, string environmentName)
{
if (hostingEnvironment == null)
{
throw new ArgumentNullException("hostingEnvironment");
}
return string.Equals(hostingEnvironment.EnvironmentName, environmentName, (StringComparison)(?));
}
Development
在开发模式中使用DeveloperExceptionPage可以暴露一些不能在产品模式下暴露的异常
本地机器开发环境变量的设置在Properties\launchSettings.json文件里面,在launchSettings.json设置的值会覆盖设置在系统环境的值
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:54339/",
"sslPort":
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WebApp1": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Staging"
},
"applicationUrl": "http://localhost:54340/"
},
"Kestrel Staging": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_My_Environment": "",
"ASPNETCORE_DETAILEDERRORS": "",
"ASPNETCORE_ENVIRONMENT": "Staging"
},
"applicationUrl": "http://localhost:51997/"
}
}
}
applicationUrl 值可以设置多个链接,使用分号来分隔
"WebApplication1": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
当运用程序通过 dotnet run启动时,将使用commandName的第一个值来启动指定的web服务器。其值可以是下面中的一个:
- IIS Express
- IIS
- Project (which launches Kestrel)
在ASP.NET Core中使用多环境的更多相关文章
- ASP.Net Core 中使用Zookeeper搭建分布式环境中的配置中心系列一:使用Zookeeper.Net组件演示基本的操作
前言:马上要过年了,祝大家新年快乐!在过年回家前分享一篇关于Zookeeper的文章,我们都知道现在微服务盛行,大数据.分布式系统中经常会使用到Zookeeper,它是微服务.分布式系统中必不可少的分 ...
- Asp.Net Core 中的环境变量
Asp.Net Core 中的环境变量 软件开发环境在大多数软件开发组织中,我们通常具有以下开发环境. 开发环境--Development 演示(模拟.临时)环境--Staging 生产环境-- Pr ...
- (10)ASP.NET Core 中的环境(Environments:dev, stage, prod)
1.环境变量配置 ASP.NET Core在应用程序启动时读取环境变量(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,并将该值存储在IHo ...
- ASP.NET Core 中文文档 第三章 原理(1)应用程序启动
原文:Application Startup 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay) ASP.NET Core 为你的应用程 ...
- ASP.NET Core 中文文档 第三章 原理(6)全球化与本地化
原文:Globalization and localization 作者:Rick Anderson.Damien Bowden.Bart Calixto.Nadeem Afana 翻译:谢炀(Kil ...
- 在ASP.NET Core中使用Angular2,以及与Angular2的Token base身份认证
注:下载本文提到的完整代码示例请访问:How to authorization Angular 2 app with asp.net core web api 在ASP.NET Core中使用Angu ...
- 如何在ASP.NET Core中实现CORS跨域
注:下载本文的完整代码示例请访问 > How to enable CORS(Cross-origin resource sharing) in ASP.NET Core 如何在ASP.NET C ...
- 如何在ASP.NET Core中实现一个基础的身份认证
注:本文提到的代码示例下载地址> How to achieve a basic authorization in ASP.NET Core 如何在ASP.NET Core中实现一个基础的身份认证 ...
- 在ASP.NET Core中实现一个Token base的身份认证
注:本文提到的代码示例下载地址> How to achieve a bearer token authentication and authorization in ASP.NET Core 在 ...
随机推荐
- jquery-validae
$(document).ready(function() { jQuery.validator.addMethod("realName", function(value, elem ...
- java微信分享
先吐槽一下!!! 哎,张小龙写的教程真差,要研究半天才能用上,大家按我的步骤12345,包你药到病除: 1.官方参考: https://mp.weixin.qq.com/wiki?t=resource ...
- Java高并发之设计模式
本文主要讲解几种常见并行模式, 具体目录结构如下图. 单例 单例是最常见的一种设计模式, 一般用于全局对象管理, 比如xml配置读写之类的. 一般分为懒汉式, 饿汉式. 懒汉式: 方法上加synchr ...
- Android生成二维码--保存和分享二维码图片
之前写过生成自定义二维码的两篇文章:<Android生成自定义二维码><Android生成二维码–拍照或从相册选取图片>,下面就介绍一下Android应用内如何保存以及分享二维 ...
- [git与github]__git与github简单了解
前言 关于版本控制,版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 我们通过版本控制系统可以解决的问题:可以非常方便的查看我们的源码文件的历代更新版本.或将我们的项目源 ...
- 【awesome-dotnet-core-learning】(2)-Sprache.Calc-表达式计算器
[awesome-dotnet-core-learning](2)-Sprache.Calc-表达式计算器 示例代码托管在GITHUB上, 欢迎STAR! 严格来说, Sprache.Calc只是上一 ...
- 用Redis作Mysql数据库缓存
使用redis作mysql数据库缓存时,需要考虑两个问题: 1.确定用何种数据结构存储来自Mysql的数据; 2.在确定数据结构之后,用什么标识作为该数据结构的键. 直观上看,Mysql中的数据都是按 ...
- nginx配置指南
nginx(读作engine x)是一款设计优秀的Http服务器, 其占用内存少, 负载能力强且稳定性高, 正在被越来越多的用户所采用. nginx可以为HTTP, HTTPS, SMTP, POP3 ...
- S5PV210中断体系结构分析
我们按照Tiny210官方的裸板程序来梳理S5PV210的中断体系. 关于 S5PV210 的中断体系结构 S5PV210 的中断控制器是由 4 个向量中断控制器(VIC). ARM PrimeCel ...
- VSCode git Warning LF will be replaced by CRLF
本文参考自:http://www.yulongjun.com/linux/20170518-08-lf-cr/ 我们打开Visual Studio Code编辑器,可以看到右下角有这个LF,这是VS ...