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

.NET Core 環(huán)境變量詳解

這篇具有很好參考價值的文章主要介紹了.NET Core 環(huán)境變量詳解。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

.NET Core 環(huán)境變量詳解

一、概述

軟件從開發(fā)到正式上線,在這個過程中我們會分為多個階段,通常會有開發(fā)、測試、以及上線等。每個階段對應(yīng)的環(huán)境參數(shù)配置我們會使用不同的參數(shù)。比如數(shù)據(jù)庫的連接字符串,開發(fā)環(huán)境一般我們都是連接的測試庫。以前這種情況通常是 COPY 兩個同名的配置文件來進(jìn)行處理,然后在本地就使用本地的配置,生產(chǎn)環(huán)境就使用生產(chǎn)環(huán)境的配置文件,十分麻煩。而 ASP .NET CORE 利用環(huán)境變量來動態(tài)配置 JSON 文件對類似這種需求提供了支持,方便我們更好的去做這些事情。

二、ASP.NET Core環(huán)境

ASP.NET Core使用ASPNETCORE_ENVIRONMENT來標(biāo)識運行時環(huán)境。。

ASP.NET Core使用環(huán)境變量基于運行時環(huán)境配置應(yīng)用程序行為。

軟件開發(fā)環(huán)境在軟件開發(fā)組織中,我們通常具有以下開發(fā)環(huán)境。

  • Development->開發(fā)環(huán)境
  • Staging->演示(模擬、臨時)環(huán)境
  • Production->生產(chǎn)環(huán)境

為什么我們需要不同的開發(fā)環(huán)境,如開發(fā),演示,生產(chǎn)等等環(huán)境。

開發(fā)環(huán)境:我們的軟件開發(fā)人員通常將此環(huán)境用于我們的日常開發(fā)工作。我們希望在開發(fā)環(huán)境中加載非縮小的 JavaScript 和 CSS 文件,以便于調(diào)試。類似地,如果存在未處理的異常,我們需要開發(fā)人員異常頁面,以便我們可以理解異常的根本原因并在需要時進(jìn)行修復(fù)。

演示環(huán)境:許多組織或者公司嘗試使其演示環(huán)境盡可能與實際生產(chǎn)環(huán)境保持一致。此環(huán)境的主要原因是識別任何與部署相關(guān)的問題。此外,如果您正在開發(fā) B2B(企業(yè)對企業(yè))應(yīng)用程序,您可能正在與其他服務(wù)提供商系統(tǒng)連接。許多組織通常設(shè)置其臨時環(huán)境以與服務(wù)提供商進(jìn)行交互,以進(jìn)行完整的端到端測試。 我們通常不會在演示環(huán)境中進(jìn)行故障排除和調(diào)試,同時為了獲得更好的性能,我們需要加載縮小的 JavaScript 和 CSS 文件。 如果存在未處理的異常,則顯示用戶友好的錯誤頁面而不是開發(fā)人員異常頁面。用戶友好的錯誤頁面不包含任何技術(shù)細(xì)節(jié)。它包含如下通用消息 :“出現(xiàn)問題,請使用下面的聯(lián)系方式發(fā)送電子郵件,聊天或致電我們的應(yīng)用程序支持”

生產(chǎn)環(huán)境:我們用于日常業(yè)務(wù)的實際環(huán)境。應(yīng)配置生產(chǎn)環(huán)境以獲得最大的安全性和性能。因此,加載縮小的 JavaScript 和 CSS 文件以提高性能。為了更好的安全性,請顯示用戶友好錯誤頁面而不是開發(fā)人員異常頁面。Developer Exception 頁面上的技術(shù)細(xì)節(jié)對最終用戶沒有意義,惡意用戶可以使用它們進(jìn)入您的應(yīng)用程序。

在Asp.NET Core項目中的Startup.cs文件,可以使用相應(yīng)的方法來控制應(yīng)用程序的行為。以下是創(chuàng)建示例程序時Startup.cs文件生成的默認(rèn)代碼:

  1. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  2. {
  3. if (env.IsDevelopment())
  4. {
  5. app.UseDeveloperExceptionPage();
  6. }
  7. else
  8. {
  9. app.UseExceptionHandler("/Home/Error");
  10. }
  11. app.UseStaticFiles();
  12. ?
  13. app.UseRouting();
  14. ?
  15. app.UseAuthorization();
  16. ?
  17. app.UseEndpoints(endpoints =>
  18. {
  19. endpoints.MapControllerRoute(
  20. name: "default",
  21. pattern: "{controller=Home}/{action=Index}/{id?}");
  22. });
  23. }

其中 IWebHostEnvironment類型的變量表示的是當(dāng)前應(yīng)用程序運行的環(huán)境,ASP.Net Core提供了四個擴(kuò)展方法,用于檢測 “ASPNETCORE_ENVIRONMENT”當(dāng)前的值。

IsDevelopment()
IsStaging()
IsProduction()
IsEnvironment()

如果需要檢查應(yīng)用程序是否在特定環(huán)境中運行,可以使用 env.IsEnvironment(“environmentname”) ,該方法忽略大小寫(請不要使用 env.EnvironmentName == “Development” 來檢查環(huán)境)。

過上面的代碼,我們可以知道,如果當(dāng)前是開發(fā)環(huán)境,使用UseDeveloperExceptionPage()方法啟用開發(fā)環(huán)境的錯誤頁面處理,這樣有利于我們在開發(fā)過程中調(diào)試程序;但是在生產(chǎn)環(huán)境中我們不希望啟用這些功能,而是將出錯頁面指向路徑“/Home/Error”,給用戶顯示友好的錯誤界面。

launchSettings.json文件

ASP.Net Core包含一個launchSettings.json的新文件,您可以在項目中“Properties”文件夾中找到該文件:

.NET Core 環(huán)境變量詳解

此文件設(shè)置了Visual Studio可以啟動的不同環(huán)境,以下是示例項目中l(wèi)aunchSettings.json文件生成的默認(rèn)代碼: 

  1. {
  2. "iisSettings": {
  3. "windowsAuthentication": false,
  4. "anonymousAuthentication": true,
  5. "iisExpress": {
  6. "applicationUrl": "http://localhost:53445",
  7. "sslPort": 0
  8. }
  9. },
  10. "profiles": {
  11. "IIS Express": {
  12. "commandName": "IISExpress",
  13. "launchBrowser": true,
  14. "environmentVariables": {
  15. "ASPNETCORE_ENVIRONMENT": "Development"
  16. }
  17. },
  18. "WebApplication1": {
  19. "commandName": "Project",
  20. "dotnetRunMessages": "true",
  21. "launchBrowser": true,
  22. "applicationUrl": "http://localhost:5000",
  23. "environmentVariables": {
  24. "ASPNETCORE_ENVIRONMENT": "Development"
  25. }
  26. }
  27. }
  28. }

在這里,有兩個配置節(jié)點:“IIS Express”、“WebApplication1”,這兩個節(jié)點,分別對應(yīng)Visual Stuido的開始調(diào)試按鈕的下拉選項:

.NET Core 環(huán)境變量詳解

aunchSettings.json 文件用于設(shè)置在 Visual Stuido 運行應(yīng)用程序的環(huán)境。我們也可以添加節(jié)點,該節(jié)點名稱會自動添加到 Visual Stuido 調(diào)試按鈕的下拉選項中。

  1. {
  2. "iisSettings": {
  3. "windowsAuthentication": false,//是否啟用Windows身份驗證
  4. "anonymousAuthentication": true,//是否啟用匿名身份驗證
  5. "iisExpress": {
  6. "applicationUrl": "http://localhost:53445",//應(yīng)用啟動的Url路徑。
  7. "sslPort": 0 //啟用SSL的端口
  8. }
  9. },
  10. "profiles": {
  11. "IIS Express": {
  12. "commandName": "IISExpress",
  13. "launchBrowser": true, //是否在瀏覽器中啟動
  14. "environmentVariables": { //將環(huán)境變量設(shè)置為鍵/值對
  15. "ASPNETCORE_ENVIRONMENT": "Development"
  16. }
  17. },
  18. "WebApplication1": {
  19. "commandName": "Project",
  20. "dotnetRunMessages": "true",
  21. "launchBrowser": true,
  22. "applicationUrl": "http://localhost:5000",
  23. "environmentVariables": {
  24. "ASPNETCORE_ENVIRONMENT": "Development"
  25. }
  26. }
  27. }
  28. }

其中commandName可以指定要啟動的Web服務(wù)器。commandName可以是以下任意一項:

  • IISExpress
  • IIS
  • Project

更多屬性的詳細(xì)信息,可通過此鏈接了解:http://json.schemastore.org/launchsettings?。

在Visual Studio項目屬性的“調(diào)試”選項卡提供了一個GUI,用于編輯launchSettings.json文件。在重新啟動Web服務(wù)器之前,對項目配置文件所做的更改可能不會生效。必須重新啟動Kestrel,才能檢測到對其環(huán)境所做的更改。

.NET Core 環(huán)境變量詳解

要取得系統(tǒng)變量ASPNETCORE_ENVIRONMENT,在3.0版本之前可以通過注入IHostingEnvironment來獲取,3.x到5.0版本可以通過IWebHostEnvironment 來獲取,請看如下代碼片段:

  1. public class Startup
  2. {
  3. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  4. {
  5. if (env.IsDevelopment())
  6. {
  7. }
  8. ?
  9. app.Run(async (context) =>
  10. {
  11. await context.Response.WriteAsync(
  12. $"EnvironmentName: {env.EnvironmentName},IsDevelopment: {env.IsDevelopment()}"
  13. );
  14. });
  15. }
  16. }

網(wǎng)站啟動后IWebHostEnvironment會從ASPNETCORE_ENVIRONMENT中獲取內(nèi)容,該變量可以是我們需要的任何值,是可以自定義的。比如我們定義一個名為Test環(huán)境:

  1. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  2. {
  3. env.EnvironmentName = "test";
  4. ?
  5. if (env.IsDevelopment())
  6. {
  7. //TODO
  8. }else if (env.IsEnvironment("text"))
  9. {
  10. //TODO
  11. }
  12. ?
  13. app.Run(async (context) =>
  14. {
  15. await context.Response.WriteAsync(
  16. $"EnvironmentName: {env.EnvironmentName},IsDevelopment: {env.IsDevelopment()}"
  17. );
  18. });
  19. }
  1. 注:在 Windows macOS 上,環(huán)境變量和值不區(qū)分大小寫。 默認(rèn)情況下,Linux 環(huán)境變量和值要區(qū)分大小寫 。

三、應(yīng)用事例

通過上面的講解我們對.net core中環(huán)境變量已經(jīng)有了比較深入的理解,現(xiàn)在我們就以一個比較常用例子:在不同環(huán)境下數(shù)據(jù)庫連接串的獲取進(jìn)行實戰(zhàn)演練。

首先在launchSettings.json定義不同的環(huán)境,如下所示:

  1. {
  2. "iisSettings": {
  3. "windowsAuthentication": false,
  4. "anonymousAuthentication": true,
  5. "iisExpress": {
  6. "applicationUrl": "http://localhost:53445",
  7. "sslPort": 0
  8. }
  9. },
  10. ?
  11. "profiles": {
  12. "IIS Express": {
  13. "commandName": "IISExpress",
  14. "launchBrowser": true,
  15. "environmentVariables": {
  16. "ASPNETCORE_ENVIRONMENT": "Development"
  17. }
  18. },
  19. "WebApplication-Development": {
  20. "commandName": "Project",
  21. "dotnetRunMessages": "true",
  22. "launchBrowser": true,
  23. "applicationUrl": "http://localhost:5000",
  24. "environmentVariables": {
  25. "ASPNETCORE_ENVIRONMENT": "Development"
  26. }
  27. },
  28. "WebApplication-Production": {
  29. "commandName": "Project",
  30. "dotnetRunMessages": "true",
  31. "launchBrowser": true,
  32. "applicationUrl": "http://localhost:5000",
  33. "environmentVariables": {
  34. "ASPNETCORE_ENVIRONMENT": "Production"
  35. }
  36. }
  37. }
  38. }

.NET Core 環(huán)境變量詳解

分別指定了不同的環(huán)境,每一種環(huán)境對應(yīng)一個配置文件,如下圖所示:

.NET Core 環(huán)境變量詳解

在不同的配置文件中定義一個配置項,取值不同,如下圖所示:

.NET Core 環(huán)境變量詳解

.NET Core 環(huán)境變量詳解

在Startup.cs代碼中加入輸出:得到不同下運行配置文件得到對應(yīng)的值,如下:

  1. Console.WriteLine("當(dāng)前環(huán)境下的連接:" + Configuration.GetSection("ConnectionString:Default").Value);

根據(jù)不同的環(huán)境運行,看下設(shè)置的效果:

.NET Core 環(huán)境變量詳解

以開發(fā)環(huán)境運行:

.NET Core 環(huán)境變量詳解

以生產(chǎn)環(huán)境運行:

.NET Core 環(huán)境變量詳解

通過這個簡單的事例,已經(jīng)了解了環(huán)境的配置方式與使用過程,相信大家以此為基礎(chǔ),可以應(yīng)用到實際的項目中。在ASP.NET Core中,開發(fā)者可以使用環(huán)境變量輕而易舉控制應(yīng)用程序在不同的環(huán)境中的行為。

?

參考文章:

在 ASP.NET Core 中使用多個環(huán)境文章來源地址http://www.zghlxwxcb.cn/news/detail-420079.html

到了這里,關(guān)于.NET Core 環(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • 【.NET Core】反射(Reflection)詳解(三)

    反射提供了對已封裝的程序集、模型和類型的對象一種動態(tài)訪問方法。反射包含動態(tài)加載程序集的Assembly類、程序集中模塊訪問的Module類、對類信息Type類、構(gòu)造函數(shù)信息ConstructorInfo類、方法信息MethodInfo類、字段信息FieldInfo類、事件信息EventInfo類、屬性信息PropertyInfo類、參數(shù)信

    2024年02月03日
    瀏覽(54)
  • 【.NET Core】可為null類型詳解

    【.NET Core】可為null類型詳解

    null 是表示不引用任何對象的空引用的文字值。 null 是引用類型變量的默認(rèn)值。普通值類型不能為 null ,可為 空的值類型 除外 可為 null 值類型 T? 表示其基礎(chǔ)值類型T的所有值及額外的null值?;A(chǔ)值類型 T 本身不能是可為空的值類型。 任何可為空的值類型都是泛型 Syst

    2024年02月01日
    瀏覽(21)
  • Ubuntu 安裝.net6.0+配置 .net環(huán)境變量

    wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh sudo chmod +x ./dotnet-install.sh 該腳本默認(rèn)安裝最新的?長期支持 (LTS)?SDK 版本,即 .NET 6。 若要安裝最新版本(可能不是 LTS) 版本的 (版本),請使用? --version latest ?參數(shù)。 ./dotnet-install.sh --version latest 若要安裝 .NET 運行時而非 SDK,

    2024年02月09日
    瀏覽(18)
  • 【.NET Core】 多線程之(Thread)詳解

    【.NET Core】 多線程之(Thread)詳解

    線程 被定義為程序的執(zhí)行路徑。每個線程都定義了一個獨特的控制流。如果您的應(yīng)用程序涉及復(fù)雜且耗時的操作,那么設(shè)置不同的線程執(zhí)行路徑往往事半功倍,讓每個線程執(zhí)行特定的工作任務(wù)。 線程是一個 輕量級進(jìn)程 。一個使用線程的常見實例是操作系統(tǒng)中并行編程的實現(xiàn)

    2024年01月20日
    瀏覽(25)
  • React + ASP.NET Core 項目筆記一:項目環(huán)境搭建(一)

    React + ASP.NET Core 項目筆記一:項目環(huán)境搭建(一)

    安裝dotnet core sdk 安裝Node.js + npm 選擇喜歡的位置新建文件夾, 然后開始摸魚 然后進(jìn)行下一步 在終端或cmd中直接運行 VS Code 如下圖 我們新初始化的項目并沒有安裝包,特別是前端部分,所以需要先安裝 使用以下語句運行 順利的話會出現(xiàn)這樣的結(jié)果 之后點開跳轉(zhuǎn)到網(wǎng)頁看看

    2024年02月10日
    瀏覽(21)
  • 【c#,.NET】Entity Framework Core基礎(chǔ)詳解

    【c#,.NET】Entity Framework Core基礎(chǔ)詳解

    目錄 ? 一、EF Core概述 1.1 什么是ORM?? 1.2 EF Core的性能怎么樣? 二、EF Core入門 2.1 什么是Migration數(shù)據(jù)庫遷移: 2.2? EF Core數(shù)據(jù)的增刪改查 2.2.1 增加數(shù)據(jù) 2.2.2 查詢數(shù)據(jù) ?2.2.3 修改和刪除數(shù)據(jù) 三、EF Core的實體類配置 3.1 約定大于配置 3.2 EF Core兩種配置方式 3.2.1 Data Annotation 3.2.2?

    2024年02月04日
    瀏覽(51)
  • 【.NET Core】Lazy<T> 實現(xiàn)延遲加載詳解

    【.NET Core】Lazy<T> 實現(xiàn)延遲加載詳解

    延遲初始化是一種將對象的創(chuàng)建延遲到第一次需要用時的技術(shù)。簡而言之,就是對象的初始化發(fā)生在第一次需要調(diào)用的時候執(zhí)行。通常所說的延遲初始化和延遲實例化的意思是相同。通過使用延遲基礎(chǔ),可以避免應(yīng)用程序不必要的計算和內(nèi)存消耗。 從.NET 4.0開始,可以使用

    2024年01月21日
    瀏覽(35)
  • 2.1 .net 8 ASP.NET Core Web API - Controller詳解

    2.1 .net 8 ASP.NET Core Web API - Controller詳解

    書接上回,上節(jié)我們留了幾個問題,即: 1、接口Hello的名字究竟怎么來的? 2、我們?nèi)绻氚呀涌诟某善渌拿Q,應(yīng)該怎么做? 3、我們繼承ControllerBase,以及[Route(“[controller]”)]屬性,又是分別起到什么作用? 需要解決以上幾個問題,我們就要繼續(xù)深入研究Controller相關(guān)的

    2024年02月20日
    瀏覽(22)
  • Azure + React + ASP.NET Core 項目筆記一:項目環(huán)境搭建(一)

    Azure + React + ASP.NET Core 項目筆記一:項目環(huán)境搭建(一)

    安裝dotnet core sdk 安裝Node.js + npm 選擇喜歡的位置新建文件夾, 然后開始摸魚 然后進(jìn)行下一步 在終端或cmd中直接運行 VS Code 如下圖 我們新初始化的項目并沒有安裝包,特別是前端部分,所以需要先安裝 使用以下語句運行 順利的話會出現(xiàn)這樣的結(jié)果 之后點開跳轉(zhuǎn)到網(wǎng)頁看看

    2024年02月09日
    瀏覽(19)
  • Taurus .Net Core 微服務(wù)開源框架:Admin 插件【2】 - 系統(tǒng)環(huán)境信息管理

    Taurus .Net Core 微服務(wù)開源框架:Admin 插件【2】 - 系統(tǒng)環(huán)境信息管理

    繼上篇:Taurus .Net Core 微服務(wù)開源框架:Admin 插件【1】 - 微服務(wù)節(jié)點管理 本篇繼續(xù)介紹下一個內(nèi)容: ?基本信息如上圖,重點的幾個參數(shù): 其它就不另外單獨翻譯了。 默認(rèn) NetCore 整體程序集加載的有點多,達(dá)100多個。 默認(rèn)網(wǎng)關(guān)的應(yīng)用程序的程序集是3個,其余全是公共運行

    2024年02月11日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包