前言

这篇讲一讲发布和环境 (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. 新一代Java高性能构建工具Maven-mvnd【实践可行版】

    Maven-mvnd介绍 Maven 的优点是稳定可靠,在绝大多数的项目上工作良好,社区生态很完善,几乎所有的 Java 开发者都在用.Maven 的缺点是,对于大一点的项目来说,构建太慢了.有时候只 ...

  2. vue3时间转换插件-Moment.js的使用

    vue3时间转换插件-Moment.js的使用 一.组件官网moment.js时间转换插件http://momentjs.cn/Moment Timezone 时区处理类库http://momentj ...

  3. JavaScript 探究[] == ![]结果为true,而 {} == !{}却为false

    console.log( [] == ![] ) // true console.log( {} == !{} ) // false 在比较字符串.数值和布尔值的相等性时,问题还比较简单.但在涉及到对 ...

  4. php执行出现权限问题

  5. 【Vue】Vue-Cli 安装

    首先需要Node.js环境支持: Node.js官网下载: https://nodejs.org/en/ 右边稳定版,左边最新版 下载安装程序之后双击运行,无脑下一步 打开终端输入版本查看命令: no ...

  6. FFmpeg在游戏视频录制中的应用:画质与文件大小的综合比较

    我们游戏内的视频录制目前只支持avi固定码率,在玩家见面会上有玩家反馈希望改善录制画质,我最近在研究了有关视频画质的一些内容并做了一些统计. 录制视频大小对比 首先在游戏引擎中增加了对录制mp4格式的 ...

  7. 【转载】科研写作入门 —— 聊聊Science Research Writing for non-native Speakers of English这本书

    原地址: https://zhuanlan.zhihu.com/p/623882027 平行侠: 今天我们聊一聊Science Research Writing for non-native Spea ...

  8. NVIDIA的Isaac AMR产品介绍

    NVIDIA的Isaac AMR是仓库自动运货机器人项目,说直白些就是一个AGV的小车,不过和传统的AGV不同,NVIDIA推出的这个产品是智能化的.传统AGV小车的运行代码都是写死的,直接把运行命令 ...

  9. IPython notebook(Jupyter notebook) 设置密码

    本文共给出两种密码设置方法,一种为直接设置密码法(较为便捷),另一种为hash密码设置法   =================================== 第一种: 直接设置密码 注意: i ...

  10. 【转载】联合发布|面向眩晕诊疗的中文医疗对话大模型MedChat发布!

    原文地址: https://mp.weixin.qq.com/s/XrddDDpDXHKBcEueH8YXcA ============================================ ...