国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

.NET Core 程序?qū)崿F(xiàn) Windows 系統(tǒng) Development、Staging、Production 三種環(huán)境的無感部署

這篇具有很好參考價值的文章主要介紹了.NET Core 程序?qū)崿F(xiàn) Windows 系統(tǒng) Development、Staging、Production 三種環(huán)境的無感部署。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

〇、前言

日常開發(fā)中,程序的環(huán)境切換是相當(dāng)頻繁的了,如果不同環(huán)境中的某些參數(shù)不同,那就需要每次編輯之前手動進行修改,比較麻煩,效率低下。

本文將以 .NET Core WebAPI 項目的配置方法為例,分步驟實現(xiàn)根據(jù)環(huán)境變量的配置參數(shù),自動讀取對應(yīng)配置文件中的特殊參數(shù)值,從而達到 Development、Staging、Production 三種環(huán)境的無感部署。

一、配置文件

程序一般默認只有一個配置文件:appsettings.Development.json。

需要手動添加另外兩個:appsettings.Staging.json、appsettings.Production.json。

?原配置文件中,默認只有一個節(jié)點:Logging,如下:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  }
}

?需要手動添加一個與 Logging 同級的節(jié)點,名稱自定義,如下示例:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "MyPara": {
    "myparavalue": "測試文本",
    "myparavalue2": [
      {
        "key": "111",
        "value": "v111"
      },
      {
        "key": "222",
        "value": "v222"
      },
      {
        "key": "333",
        "value": "v333"
      }
    ]
  }
}

注意,三個配置文件中需要加上完全一樣的參數(shù)名稱,然后根據(jù)環(huán)境不同配置不同的值。

二、程序讀取配置

1. 配置文件信息讀取實現(xiàn)

接下來就是在程序中配置讀取了,在控制器的構(gòu)造函數(shù)添加環(huán)境判斷,然后取出配置文件中新增節(jié)點的值備用。

以下實例,包含了讀取 字符值、列表值 兩種:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;

[Route("api/[controller]/[action]")]
[ApiController]
public class SystemConfigController : ControllerBase // SystemConfig
{
    public static IConfigurationRoot configurationRoot = null;
    // 示例只有兩個字段,就用字典 Dictionary 來演示了,若字段較多時,可用實體對象 list
    public static Dictionary<string, string> keyValuePairs = new Dictionary<string, string>();
    public SystemConfigController(IWebHostEnvironment env)
    {
        try
        {
            configurationRoot = AppConfigure.GetConfigurationRoot(env.ContentRootPath, env.EnvironmentName);
            if (keyValuePairs.Count == 0) // 僅首次加載時讀取
            {
                string flag = string.Empty;
                int i = 0;
                while (flag != null)
                {
                    var keyinfo = configurationRoot[$"MyConfigPara:myparavalue2:{i}:key"];
                    var valueinfo = configurationRoot[$"MyConfigPara:myparavalue2:{i}:value"];
                    if (keyinfo != null && valueinfo != null)
                    {
                        keyValuePairs.Add(keyinfo, valueinfo); // 加入字典
                        i++;
                    }
                    else
                        flag = null;
                }
            }
        }
        catch (Exception ex)
        {
            // 日志框架記錄日志
        }
    }
    public void TestAction()
    {
        // 讀取配置文件具體值
        string myparavalue = configurationRoot["MyPara:myparavalue"];
    }
}

配置文件讀取幫助類:AppConfigure.cs。

using Microsoft.Extensions.Configuration;
using System.Collections.Concurrent;

public static class AppConfigure
{
    // 緩存字典
    private static readonly ConcurrentDictionary<string, IConfigurationRoot> _cacheDict;
    static AppConfigure()
    {
        _cacheDict = new ConcurrentDictionary<string, IConfigurationRoot>();
    }
    // 傳入 JSON 文件夾路徑與當(dāng)前的環(huán)境變量值
    public static IConfigurationRoot GetConfigurationRoot(string jsonDir, string environmentName = null)
    {
        // 設(shè)置緩存的 KEY
        var cacheKey = $"{jsonDir}#{environmentName}";
        // 添加默認的 JSON 配置
        var builder = new ConfigurationBuilder().SetBasePath(jsonDir)
            .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
        // 根據(jù)環(huán)境變量添加相應(yīng)的 JSON 配置文件
        if (!string.IsNullOrEmpty(environmentName))
        {
            builder = builder.AddJsonFile($"appsettings.{environmentName}.json", optional: true, reloadOnChange: true);
        }
        // 返回構(gòu)建成功的 IConfigurationRoot 對象
        return builder.Build();
    }
}

2. 關(guān)于本機測試

可以通過修改項目的初始設(shè)置文件(文件夾下 Properties-->launchSettings.json)修改當(dāng)前的運行環(huán)境,也可以在項目屬性的“Debug”中修改,效果是一樣的,如下:

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:40493",
      "sslPort": 44360
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development" // 修改切換運行環(huán)境:Development、Production、Staging
      }
    },
    "Finance.ReconciliationPlatform": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "launchUrl": "weatherforecast",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

??.NET Core 程序?qū)崿F(xiàn) Windows 系統(tǒng) Development、Staging、Production 三種環(huán)境的無感部署

注意:launchSettings.json 文件,僅用于本地開發(fā)計算機,不會被編譯發(fā)布到生產(chǎn)環(huán)境,因此不能存儲重要信息。

三、Windows 服務(wù)器配置

最后就是配置 Windows 服務(wù)器的環(huán)境變量了,用來標識程序運行的環(huán)境。

如下圖,根據(jù)需要配置不同的環(huán)境變量:

  • ASPNETCORE_ENVIRONMENT:Development
  • ASPNETCORE_ENVIRONMENT:Staging
  • ASPNETCORE_ENVIRONMENT:Production

注意:此方法配置的是服務(wù)器的環(huán)境變量,針對的是整臺機器的環(huán)境類型,若需求是在同一臺機器上配置多類型的程序,請參考后邊章節(jié)。

.NET Core 程序?qū)崿F(xiàn) Windows 系統(tǒng) Development、Staging、Production 三種環(huán)境的無感部署

至此,就配置完成了。

四、如何在同一臺服務(wù)器 部署 兩種不同環(huán)境 的服務(wù)?

1、修改 Startup.cs 代碼,固定運行環(huán)境

通過在 Startup.cs 文件的 Configure() 方法中,賦值環(huán)境名稱(EnvironmentName),以實現(xiàn)靈活控制程序的環(huán)境。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    env.EnvironmentName = "Production";
    if (env.IsProduction()) // true
    {
        // 。。。
    }
}

2、通過 IIS 配置服務(wù)的環(huán)境變量

通過 IIS 配置環(huán)境變量,也是區(qū)分生效范圍的:

  • 若直接在根目錄的“配置編輯器”中配置,則其下的服務(wù)將是同一環(huán)境類型;(后續(xù)更新服務(wù)后值不變)
  • 若針對單個服務(wù)的“配置編輯器”配置,則僅針對當(dāng)前服務(wù)。(缺點:每次服務(wù)更新后,需重新配置)

注意,針對服務(wù)的環(huán)境配置優(yōu)先級,高于根目錄的配置。繼承來的環(huán)境配置無法修改,要配置其他的環(huán)境,需要新增。

如下配置步驟:

(配置管理器 --> 根據(jù)路徑查找 system.webServer/aspNetCore --> system.webServer/aspNetCore --> 編輯項ASPNETCORE_ENVIRONMENT填入指定的環(huán)境值Production、Staging、Development

.NET Core 程序?qū)崿F(xiàn) Windows 系統(tǒng) Development、Staging、Production 三種環(huán)境的無感部署

項路徑中另加服務(wù)名稱的就是在當(dāng)前服務(wù)新增的,另外一個則是從根目錄繼承來的,當(dāng)前新增的優(yōu)先級較高。文章來源地址http://www.zghlxwxcb.cn/news/detail-468214.html

到了這里,關(guān)于.NET Core 程序?qū)崿F(xiàn) Windows 系統(tǒng) Development、Staging、Production 三種環(huán)境的無感部署的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 運行flask報WARNING: This is a development server. Do not use it in a production deployment.

    運行flask報WARNING: This is a development server. Do not use it in a production deployment.

    運行 flask 程序,報: WARNING: This is a development server. Do not use it in a production deployment. 解決方案一,使用PyWSGI(不推薦) 1.?下載gevent包:在控制臺輸入: pip install gevent 2. 修改 flask 啟動代碼: 解決方案二,雖然 PyWSGI 服務(wù)器相對輕量并且易于設(shè)置,但許多人更傾向于使用像 Gun

    2024年02月07日
    瀏覽(27)
  • 使用flask,關(guān)于WARNING: This is a development server. Do not use it in a production deployment問題

    當(dāng)flask開發(fā)web服務(wù),本地開發(fā)完成后,部署線上環(huán)境,運行,也會和本地一樣,控制臺會打印以下信息: WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. 提示信息很明顯,意思就是在生產(chǎn)環(huán)境,不要再用這種方式運行程序,最好用W

    2024年02月16日
    瀏覽(21)
  • .NET Core 實現(xiàn)日志打印輸出在控制臺應(yīng)用程序中

    .NET Core 實現(xiàn)日志打印輸出在控制臺應(yīng)用程序中

    在本文中,我們將探討如何在 .NET Core 應(yīng)用程序中將日志消息輸出到控制臺,從而更好地了解應(yīng)用程序的運行狀況。 在 .NET Core 中,日志輸出打印是使用 Microsoft.Extensions.Logging 命名空間中的類和方法實現(xiàn)的。首先,我們需要確保在項目中添加了以下必要的依賴包: Microsoft.Ex

    2024年02月11日
    瀏覽(676)
  • 使用 Asp.net core webapi 集成配置系統(tǒng),提高程序的靈活和可維護性

    使用 Asp.net core webapi 集成配置系統(tǒng),提高程序的靈活和可維護性

    集成配置系統(tǒng)的主要目的是將應(yīng)用程序的配置信息與代碼分離,使得配置信息可以在不需要修改代碼的情況下進行更改。這樣可以提高應(yīng)用程序的靈活性和可維護性。 ASP.NET Core 提供了一種靈活的配置系統(tǒng),可以輕松地將配置信息從不同的來源加載到應(yīng)用程序中,并且可以根

    2024年02月01日
    瀏覽(28)
  • 基于.Net Core實現(xiàn)的飛書所有文檔一鍵導(dǎo)出服務(wù)(支持多系統(tǒng))

    基于.Net Core實現(xiàn)的飛書所有文檔一鍵導(dǎo)出服務(wù)(支持多系統(tǒng))

    一個支持Windows、Mac、Linux系統(tǒng)的飛書文檔一鍵導(dǎo)出服務(wù),僅需一行命令即可將飛書知識庫的全部文檔同步到本地電腦。支持導(dǎo)出 markdown , docx , pdf 三種格式。導(dǎo)出速度嘎嘎快,實測 700 多個文檔導(dǎo)出只需 25 分鐘,且程序是后臺掛機運行,不影響正常工作。查看最新更新 最近

    2024年02月12日
    瀏覽(20)
  • abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——模塊管理升級(六十)

    abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——模塊管理升級(六十)

    abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——ABP總體介紹(一) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——解決方案介紹(二) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——領(lǐng)域?qū)觿?chuàng)建實體(三) ? abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——定義倉儲并實現(xiàn) (四) abp(net core)+easyui+efcore實

    2023年04月09日
    瀏覽(90)
  • abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——組織管理升級之下(六十二)

    abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——組織管理升級之下(六十二)

    A bp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)目錄 abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——ABP總體介紹(一) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——解決方案介紹(二) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——領(lǐng)域?qū)觿?chuàng)建實體(三) ? abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——

    2023年04月23日
    瀏覽(47)
  • abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——模塊管理升級之上(六十一)

    abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——模塊管理升級之上(六十一)

    ? A bp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)目錄 abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——ABP總體介紹(一) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——解決方案介紹(二) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——領(lǐng)域?qū)觿?chuàng)建實體(三) ? abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)—

    2023年04月16日
    瀏覽(57)
  • 《深入淺出.NET框架設(shè)計與實現(xiàn)》筆記6.2——ASP.NET Core應(yīng)用程序多種運行模式之二——IIS 服務(wù)承載

    ?ASP.NET Core應(yīng)用程序可以在多種運行模式下運行,包括自宿主(Self-Hosting)、IIS服務(wù)承載、桌面應(yīng)用程序、服務(wù)承載。 因此選擇和時的模式很重要。 IIS 服務(wù)承載 將 ASP.NET Core 應(yīng)用程序托管在 Internet Information Services (IIS) 中。 利用 IIS 提供的高級功能,如負載均衡、HTTPS 支持和

    2024年04月26日
    瀏覽(19)
  • abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——供應(yīng)商管理升級之下(六十四)

    abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——供應(yīng)商管理升級之下(六十四)

    a bp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)目錄 abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——ABP總體介紹(一) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——解決方案介紹(二) abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——領(lǐng)域?qū)觿?chuàng)建實體(三) ? abp(net core)+easyui+efcore實現(xiàn)倉儲管理系統(tǒng)——

    2024年02月03日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包