前言

这篇讲一讲发布和环境 (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)的更多相关文章

  1. 技术的正宗与野路子 c#, AOP动态代理实现动态权限控制(一) 探索基于.NET下实现一句话木马之asmx篇 asp.net core 系列 9 环境(Development、Staging 、Production)

    黄衫女子的武功似乎与周芷若乃是一路,飘忽灵动,变幻无方,但举手抬足之间却是正而不邪,如说周芷若形似鬼魅,那黄衫女子便是态拟神仙. 这段描写出自<倚天屠龙记>第三十八回. “九阴神抓”本是& ...

  2. asp.net core 系列 9 环境(Development、Staging 、Production)

    一.在asp.net core中使用多个环境 ASP.NET Core 配置是基于运行时环境, 使用环境变量.ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONME ...

  3. ASP.NET Core 中文文档 第三章 原理(11)在多个环境中工作

    原文: Working with Multiple Environments 作者: Steve Smith 翻译: 刘浩杨 校对: 孟帅洋(书缘) ASP.NET Core 介绍了支持在多个环境中管 ...

  4. ASP.NET Core 中文文档 第四章 MVC(01)ASP.NET Core MVC 概览

    原文:Overview of ASP.NET Core MVC 作者:Steve Smith 翻译:张海龙(jiechen) 校对:高嵩 ASP.NET Core MVC 是使用模型-视图-控制器(M ...

  5. ASP.NET Core 中文文档 第四章 MVC(3.3)布局视图

    原文:Layout 作者:Steve Smith 翻译:娄宇(Lyrics) 校对:孟帅洋(书缘) 视图(View)经常共享视觉元素和编程元素.在本篇文章中,你将学习如何在你的 ASP.NET 应用程 ...

  6. ASP.NET Core和Angular 2双剑合璧

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:两个还没有正式发布的东西一起用,是什么效果? 效果当然会很好了(我猜的),那么如何在A ...

  7. Asp.net Core基于MVC框架实现PostgreSQL操作

    简单介绍 Asp.net Core最大的价值在于跨平台.跨平台.跨平台.重要的事情说三遍.但是目前毕竟是在开发初期,虽然推出了1.0.0 正式版,但是其实好多功能还没有完善.比方说编译时的一些文件编码 ...

  8. 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 ...

  9. asp.net core+ef core

    asp.net core+ef core 官方的文档https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html 先来看一 ...

  10. ASP.NET Core MVC压缩样式、脚本及总是复制文件到输出目录

    前言 在.NET Core之前对于压缩样式文件和脚本我们可能需要借助第三方工具来进行压缩,但在ASP.NET MVC Core中则无需借助第三方工具来完成,本节我们来看看ASP.NET Core MV ...

随机推荐

  1. 咬文嚼图式的介绍二叉树、B树/B-树

    前言 因为本人天资愚钝,所以总喜欢将抽象化的事务具象化表达.对于各类眼花缭乱的树,只需要认知到它们只是一种数据结构,类似数组,切片,列表,映射等这些耳熟能详的词汇.对于一个数据结构而言,无非就是增删改 ...

  2. Linux安全启动及Machine Owner Key(UEFI BIOS MBR GPT GRUB)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   无 前言   只要装过各种系统的人都或多或少会接触 ...

  3. 5/15课下作业:评价一下steam软件

    用户界面: 登录后会弹出特惠广告,广告内容可能不常用.主界面简洁方便,启动游戏,购买游戏,浏览社区,浏览自己内容一目了然 记住用户选择: 登录一次后会记住用户的账户密码,可以直接进行用户间的切换,会记 ...

  4. PyCharm配置Miniconda3

    打开PyCharm,点击"File"(文件)菜单,选择"Settings"(设置) 选择python interpreter中的配置 选择add 选择Conda ...

  5. 亚马逊 vpc 子网 路由表 互联网网关 弹性ip

    创建vpc,子网,路由表,互联网网关,弹性ip等网络资源 vpc和子网 创建互联网网关 附加到vpc 创建路由表 路由表编辑路由 此路由通过这个网关出去 编辑子网关联 保存关联 有关云主机 创建属于那 ...

  6. Jmeter函数助手35-property

    property函数用于获取jmeter属性值. 属性名称:填入jmeter的属性名称 存储结果的变量名(可选) 默认值:缺省值,当获取属性值为空时则返回该值 1.查看jmeter全局属性,测试计划右 ...

  7. 【MySQL】 线上补数据SQL

    昨天一下午就为了补业务数据,写SQL快崩溃了得... 直接贴不解释了 -- 先拿到[销售变更id]拿到[变更信息] -- 通过[变更信息]的主表id拿到[主表信息] -- 条件可以是 MAX(cc.i ...

  8. 【SpringMVC】IDEA 不识别webapp的解决办法

    参考地址: https://blog.csdn.net/omrleft123/article/details/70237205

  9. 模具仿真软件FASTAMP —— 华中科技大学材料成形及模具技术国家重点实验室

    相关介绍: https://www.ruanfujia.com/software/9525/ FASTAMP 是由华中科技大学材料成形及模具技术国家重点实验室独立设计开发的,是专业的板料冲压成形快速分 ...

  10. 如何租GPU:一个价格还算OK的云GPU服务器租赁公司

    一个价格还算OK的云GPU服务器租赁公司. 地址: https://www.gpushare.com/