• 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();
        }
    }

    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>

    这样就可以了.

  • 相关阅读:
    【转载】JavaScript变量: 变量命名原则
    【转载】mysql运行报【The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone...】的解决方法
    Java Web 环境搭建
    原生JS消息提示插件Message.js
    SQL Server 参数嗅探问题
    根据表名和列名获取关联index的创建脚本
    mongodb快速均衡导入数据
    index optimize
    PG Foreign key 外键
    无密码登陆
  • 原文地址:https://www.cnblogs.com/keatkeat/p/16261730.html
Copyright © 2020-2023  润新知