ASP.NET Core – Work with Environment (Development, Staging, Production)
前言
这篇讲一讲发布和环境 (development, staging, production)
介绍
我的网站是 host 在 Azure 的 Virtual Machine, 跑 IIS, 没有使用 docker, 就一个简单方式而已.
通常网站会分 3 个阶段
1. development 开发中
2. staging 测试中
3. production 最终使用版
不同环境使用不同的 appsetting 和 web.config. 代码则是同一份. 所以部分代码需要依据环境有所区别.
比如 staging 的时候可能不需要性能优化, 跑多点 log 是 ok 的, production 的时候性能就很重要了.
Get environment info
注入 IWebHostEnvironment 或者 IHostEnvironment 就可以获取到环境资料了.
public class IndexModel : PageModel
{
private readonly IWebHostEnvironment _webHostEnvironment; public IndexModel(
IWebHostEnvironment webHostEnvironment
)
{
_webHostEnvironment = webHostEnvironment;
} public string Environment { get; set; } = ""; public void OnGet()
{
Environment = _webHostEnvironment.EnvironmentName; // "Development" | "Staging" | "Production"
var isDevelopment = _webHostEnvironment.IsDevelopment();
var isStaging = _webHostEnvironment.IsStaging();
var isProduction = _webHostEnvironment.IsProduction();
}
}
在 Program.cs 拿 Environment
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var isProduction1 = builder.Environment.IsProduction();
var app = builder.Build();
var isProduction2 = app.Environment.IsProduction();
}
}
在 app extension 获取 Environment
public static class ErrorHandlingApplicationBuilderExtensions
{
public static IApplicationBuilder Use404And500Page(
this IApplicationBuilder app
)
{
var env = app.ApplicationServices.GetRequiredService<IHostEnvironment>();
return app;
}
}
绝招
参考: StackOverflow – Access environment name in Program.Main in ASP.NET Core
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == Environments.Development)
HTML depend on environment
类似 swtich 的写法
<environment include="Development">
<h1>Hello World – Develement</h1>
</environment>
<environment include="Staging">
<h1>Hello World – Staging</h1>
</environment>
<environment include="Production">
<h1>Hello World – Production</h1>
</environment>
Web.config setup environment
我都是 publish to local folder, 然后通过 remote desktop 链接 Azure virtual machine 把 files copy/paste 进去发布的
dotnet publish TestWebPublish.csproj -o C:\keatkeat\projects\release
运行完以后, 修改 web.config
本来是
<aspNetCore processPath="dotnet" arguments=".\TestPublish.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
换成
<aspNetCore processPath="dotnet" arguments=".\TestPublish.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Staging" />
</environmentVariables>
</aspNetCore>
这样就可以了.
ASP.NET Core – Work with Environment (Development, Staging, Production)的更多相关文章
- 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)
黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...
- asp.net core 系列 9 环境(Development、Staging 、Production)
一.在asp.net core中使用多个环境 ASP.NET Core 配置是基于运行时环境, 使用环境变量.ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONME ...
- ASP.NET Core 中文文档 第三章 原理(11)在多个环境中工作
原文: Working with Multiple Environments 作者: Steve Smith 翻译: 刘浩杨 校对: 孟帅洋(书缘) ASP.NET Core 介绍了支持在多个环境中管 ...
- ASP.NET Core 中文文档 第四章 MVC(01)ASP.NET Core MVC 概览
原文:Overview of ASP.NET Core MVC 作者:Steve Smith 翻译:张海龙(jiechen) 校对:高嵩 ASP.NET Core MVC 是使用模型-视图-控制器(M ...
- ASP.NET Core 中文文档 第四章 MVC(3.3)布局视图
原文:Layout 作者:Steve Smith 翻译:娄宇(Lyrics) 校对:孟帅洋(书缘) 视图(View)经常共享视觉元素和编程元素.在本篇文章中,你将学习如何在你的 ASP.NET 应用程 ...
- ASP.NET Core和Angular 2双剑合璧
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:两个还没有正式发布的东西一起用,是什么效果? 效果当然会很好了(我猜的),那么如何在A ...
- Asp.net Core基于MVC框架实现PostgreSQL操作
简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...
- Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...
- asp.net core+ef core
asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...
- ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录
前言 在.NET Core之前对于压缩样式文件和脚本我们可能需要借助第三方工具来进行压缩,但在ASP.NET MVC Core中则无需借助第三方工具来完成,本节我们来看看ASP.NET Core MV ...
随机推荐
- 1.1 第一个hello程序
还记得在每一个编程平台上的第一个程序都是hello world,现在就以这个程序为载体,先浅聊一下计算机系统吧. 1.预处理阶段,预处理器cpp根据字符#开头的命令修改原始的程序,并把头文件里的内容直 ...
- 使用FModel提取游戏资产
目录 前言 FModel简介 FModel安装 FModel使用 初次使用 资产预览 资产导出 附录 dumper Dumper-7生成usmap文件 向游戏中注入dll 前言 这篇文章仅记录我作为初 ...
- 操作系统|SPOOLing(假脱机)技术
什么是假脱机技术,它可以解决什么问题? 什么是脱机技术 要回答什么是假脱机技术,首先我们需要知道什么是脱机技术.<计算机操作系统(第四版)>写道: 为了解决人机矛盾及CPU和I/O设备之间 ...
- RDD入门了解
RDD即resilient distributed dataset 弹性分布式数据集,简单来说就是数据集,可以类比python的list dict:但是数据是分布式存储的,可用于分布式计算:可以存在内 ...
- springboot 3.x MultipartFile 参数总是为空 参数传递不进来
场景: 在写一个统一文件上传的时候,MultipartFile参数一直传递不进来,一直为空. 排错方法: 我先是将业务简化,使用api文档进行测试,测试是前端问题还是后端问题. 简化后业务: 用api ...
- python面向对象:继承
python面向对象:继承super()的用 super()的用法 一: class A: def __init__(self): self.a = '这是一个属性' def add(self, x) ...
- CSS mask-image 实现边缘淡出过渡效果
使用场景 在生产环境中,遇到一个需求,需要在一个深色风格的大屏页面中,嵌入 Google Maps.为了减少违和感,希望地图四边能够淡出过渡. 这里的"淡出过渡",关键是淡出,而非 ...
- 【Vue】Re19 Promise
一.概述 Promise是异步编程的解决方案 异步事件的处理: 封装的异步请求函数不能立即获取结果, 通常会传入另外一个函数,在请求成功的时候将数据通过传入的函数回调出去 如果只是一个简单的请求,那么 ...
- 国产AI模型和美国顶级AI模型的距离在哪?—— 算力?算法?数据?
前段时间去了长春一汽,聊了Reinforcement Learning方面的工作,既是面试,也是谈了谈意向,最后全部OK,本打算是签合同了,结果HR说要求有三年的社保缴纳证明工作经验,最后说可以减到2 ...
- 台式机,华硕主板z390ws,cpu为i7-9700k 安装Ubuntu18.04系统 使用独立显卡工作 (但是显示器HDMI线缆插在主板的HDMI插槽)开机进入系统运行几分钟后自动重启,此时主板显示错误码为AMI错误
如题: 手上有这样一台新的工作站,配置为华硕主板z390ws,cpu为i7-9700k ,独立显卡为技嘉2060super, 安装Ubuntu18.04系统 . 在主板bios中进行设置(设置使用 P ...