1. 程式人生 > >ASP.NET Core 配置和使用環境變數

ASP.NET Core 配置和使用環境變數

前言

通常在應用程式開發到正式上線,在這個過程中我們會分為多個階段,通常會有 開發、測試、以及正式環境等。每個環境的引數配置我們會使用不同的引數,因此呢,在ASP.NET Core中就提供了相關的環境API,方便我們更好的去做這些事情。

環境

ASP.NET Core使用ASPNETCORE_ENVIRONMENT來標識執行時環境。

  • ASP.NET Core預設環境
  1. Development:開發環境
  2. Staging:暫存環境(測試環境)
  3. Production:正式環境

要取得系統變數ASPNETCORE_ENVIRONMENT,在3.0版本之前可以通過注入IHostingEnvironment來獲取,3.x通過IWebHostEnvironment 請看如下程式碼片段:


    public class Startup
    {
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
            }

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync(
                    $"EnvironmentName: {env.EnvironmentName},IsDevelopment: {env.IsDevelopment()}"
                );
            });
        }
    }

網站啟動後IWebHostEnvironment會從ASPNETCORE_ENVIRONMENT中獲取內容,該變數可以是我們需要的任何值。也就是該變數不一定要一定是預設的值,我們是可以自定義的。

比如我們定義一個名為Test環境

      public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            env.EnvironmentName = "test";

            if (env.IsDevelopment())
            {
                //TODO
            }else if (env.IsEnvironment("text"))
            {
                //TODO
            }

            app.Run(async (context) =>
            {
                await context.Response.WriteAsync(
                    $"EnvironmentName: {env.EnvironmentName},IsDevelopment: {env.IsDevelopment()}"
                );
            });
  }
注:在 Windows 和 macOS 上,環境變數和值不區分大小寫。 預設情況下,Linux 環境變數和值要區分大小寫 。

       public static IHostBuilder CreateHostBuilder(string[] args) =>
           Host.CreateDefaultBuilder(args)
               .ConfigureAppConfiguration((hostContext, config) =>
               {
                   var env = hostContext.HostingEnvironment;
                   config.SetBasePath(Path.Combine(env.ContentRootPath, "Configuration"))
                       .AddJsonFile(path: "settings.json", optional: false, reloadOnChange: true)
                       .AddJsonFile(path: $"settings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);
               })
               .ConfigureWebHostDefaults(webBuilder =>
               {
                   webBuilder.UseStartup<Startup>();
               });

通過上述程式碼我們,讀取我們的配置檔案回顯讀取setting.json並設定為optional: false,表示該配置為必要的配置;再往下繼續讀取再讀取settings.{env.EnvironmentName}.json檔案。當載入遇到相同的Key那麼就會覆蓋掉前面的配置項。

  • SetBasePath:設定配置的目錄位置,如果是放在不同目錄,再把路徑換掉即可。
  • AddJsonFile:
    • path:檔案的路徑位置。
    • optional:如果是必要的配置檔案,可選就要設定為false,當檔案不存在就會引發FileNotFoundException。
    • reloadOnChange:如果檔案被更新,就同步更新IConfiguration例項的值。

環境設定

  • IIS

web.config配置環境變數

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\Demo.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout">
      <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Test" />
      </environmentVariables>
    </aspNetCore>
  </system.webServer>
</configuration>
  • Visual Studio Code

launch.json中配置ASPNETCORE_ENVIRONMENT

{
   "version": "0.1.0",
   "configurations": [
        {
            "name": ".NET Core Launch (web)",
            "type": "coreclr",
            "env": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            }
        }
    ]
}
  • Visual Studio IDE

Properties\launchSettings.json


  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Test"
      }
    },
   }

相關推薦

ASP.NET Core 配置使用環境變數

前言 通常在應用程式開發到正式上線,在這個過程中我們會分為多個階段,通常會有 開發、測試、以及正式環境等。每個環境的引數配置我們會使用不同的引數,因此呢,在ASP.NET Core中就提供了相關的環境API,方便我們更好的去做這些事情。 環境 ASP.NET Core使用ASPNETCORE_ENVI

ASP.NET Core配置環境變量啟動設置

aspASPNETCORE_ENVIRONMENT  ASP.NET Core控制環境切換最核心的東西是“ASPNETCORE_ENVIRONMENT”環境變量,它直接控制當前應用程序運行的環境類型。您可以通過在項目上右鍵菜單選擇“屬性”選項,然後切換到“調試”標簽來修改此環境變量。    此環境變量框架默認

asp.net core在Centos7環境運行配置

打開 ted fire lis 需要 win down perm mil 環境說明: 服務器系統:CentOS 7.2.1511相關工具:Xshel、Xftp服務器軟件軟件:.netcore、nginx、supervisor 準備好發布的程序 安裝.NET Core SD

(10)ASP.NET Core 中的環境配置

1.環境變數配置 ASP.NET Core在應用程式啟動時讀取環境變數(Properties\launchSettings.json)ASPNETCORE_ENVIRONMENT,並將該值儲存在IHostingEnvironment.EnvironmentName中。ASPNETCORE_ENVIRONME

ASP.NET Core 配置文件(無處不在的依賴註入)

word gist .net core closed 數據 minus [] etsec 過程 前煙:   .NET Core 中取消了以往的 XML 節點配置文件,改用了 *.json 格式。   在 Startup.cs 文件中,構造方法 build appsett

學習ABP ASP.NET Core with Angular 環境問題

creating eps 不一致 問題 ref -1 bpa 編譯運行 ins 1. 前言  最近學習ABP架構 搭建ASP.NET Core with Angular遇到了些問題,折騰了一個禮拜最終在今天解決了,想想這個過程的痛苦就想利用博客記錄下來。其實一直想寫博客,但

什麽是Asp.net Core .net core有什麽區別?

pla session 推出 pre info 訪問 studio span 寫到 為什麽要寫這篇文章 寫這篇文章有兩個原因,第一個是因為新站點創建出來後一直空置著,所以寫一篇文章放在這裏。第二就是因為近來在做一些基於Asp.net core平臺的項目開發,也遇到了一些問題

asp.net core認證授權的初始認識--claim、claimsidentity、claimsprincipal

brush AD cookie PE 身份證號 oat 初始 name IV Claim表示一個聲明單元,它用來組成ClaimsIdentity。ClaimsIdentity表示一個證件,例如身份證,身份證上面的名字表示一個Claim,身份證號也表示一個Claim,所有

ASP.NET Core MVC EF Core 構建Web應用 (二)

work nal nta 多個 包括 catch web 應用 自動 選項卡 本節學習如何執行基本的 CRUD (創建、 讀取、 更新、 刪除) 操作。 自定義“詳細信息”頁 學生索引頁的基架代碼省略了 Enrollments 屬性,因為該屬性包含一個集合。 在“詳細信息”

ASP.NET Core MVC EF Core 構建Web應用 (九)

fix pro school time lap namespace 繼承映射 數據庫表 eas 在上一節中,已經處理了並發異常。 本節將演示如何在數據模型中實現繼承。 在面向對象的編程中,可以使用繼承以便於重用代碼。 在本教程中,將更改 Instructor和 Studen

ASP.NET Core MVC EF Core 構建Web應用 (十)

pan 信息 expr dispose writing AS das ech 任務欄 之前的學習中,已經以每個類一張表的方式實現了繼承。 本節將會介紹在掌握開發基礎 ASP.NET Core web 應用程序之後使用 Entity Framework Core 開發時需要註

ASP.NET Core 配置跨域(CORS)

tin sha har exce pub header service 策略 uil 1.安裝程序CORS程序包 Install-Package Microsoft.AspNetCore.Mvc.Cors 一般默認都帶了此程序包的 2.配置CORS服務 在 Startu

ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

microsoft 下載 sqlit 圖片 sqli 可能 ssi htm 技術 原文:ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基礎教程 - 簡單教程,簡單編程 ASP.NET Core 配置 EF SQLite 支持

ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基礎教程 - 簡單教程,簡單編程

先來 server tps 設計 cos ble ESS thead 安裝失敗 原文:ASP.NET Core 配置 Entity Framework Core - ASP.NET Core 基礎教程 - 簡單教程,簡單編程 ASP.NET Core 配置 E

ASP.NET Core MVC Visual Studio入門(五) 使用 SQL Server LocalDB

ASP.NET Core MVC 和 Visual Studio入門(五)   使用 SQL Server LocalDB Rick Anderson     MvcMovieContext物件操縱連線到資料庫並對映電影物件到資料庫記

ASP.NET Core MVC Visual Studio入門(四)新增模型

ASP.NET Core MVC 和 Visual Studio入門(四)新增模型   Rick Anderson 和Tom Dykstra   在要節中將新增一些在資料庫中管理電影的類,這些類將成為MVC應用的“Model(模型)”部分。 這些類將與Enti

ASP.NET Core MVC Visual Studio入門(三) 新增檢視

ASP.NET Core MVC 和 Visual Studio入門(三)   新增檢視 本節將修改HelloWorldController類,從而使用Razor檢視模板來乾淨利索地封裝產生一個HTML迴應給客戶端的過程。 我們將使用Razor建立一個檢視模板,基於

記一個ASP.Net Core配置文件問題

lap 測試日誌 png 官方 pub var ast pac spa   最近排查一個ASP.Net Core項目的Bug,用LogInformation()記錄一些運行日誌,本地測試日誌記錄正常,然後發到RC環境測試,結果發現死活沒有日誌信息。   首先想到就是LogL

記一個ASP.Net Core配置檔案問題

  最近排查一個ASP.Net Core專案的Bug,用LogInformation()記錄一些執行日誌,本地測試日誌記錄正常,然後發到RC環境測試,結果發現死活沒有日誌資訊。   首先想到就是LogLevel設定有問題。檢查了基礎的配置檔案(appsettings.json)沒有問題,而RC環境的配置檔案

ASP.NET Core MVC Entity Framework Core 連線mysql (二)

EF Core 開啟negut管理器 安裝如下的包 新增Models類 新增Students using System; using System.Collections.Generic; using System.Linq; using System