<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

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

      一、概述

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

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

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

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

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

      • Development->開發(fā)環(huán)境
      • Staging->演示(模擬、臨時(shí))環(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ā)人員異常頁面,以便我們可以理解異常的根本原因并在需要時(shí)進(jìn)行修復(fù)。

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

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

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

          public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
          {
              if (env.IsDevelopment())
              {
                  app.UseDeveloperExceptionPage();
              }
              else
              {
                  app.UseExceptionHandler("/Home/Error");
              }
              app.UseStaticFiles();
      
              app.UseRouting();
      
              app.UseAuthorization();
      
              app.UseEndpoints(endpoints =>
              {
                  endpoints.MapControllerRoute(
                      name: "default",
                      pattern: "{controller=Home}/{action=Index}/{id?}");
              });
          }
      

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

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

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

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

      launchSettings.json文件

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

      image-20210318145513843

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

      {
        "iisSettings": {
          "windowsAuthentication": false,
          "anonymousAuthentication": true,
          "iisExpress": {
            "applicationUrl": "http://localhost:53445",
            "sslPort": 0
          }
        },
        "profiles": {
          "IIS Express": {
            "commandName": "IISExpress",
            "launchBrowser": true,
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          },
          "WebApplication1": {
            "commandName": "Project",
            "dotnetRunMessages": "true",
            "launchBrowser": true,
            "applicationUrl": "http://localhost:5000",
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          }
        }
      }
      
      

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

      Visual Stuido的開始調(diào)試按鈕的下拉選項(xiàng)

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

      {
        "iisSettings": {
          "windowsAuthentication": false,//是否啟用Windows身份驗(yàn)證
          "anonymousAuthentication": true,//是否啟用匿名身份驗(yàn)證
          "iisExpress": {
            "applicationUrl": "http://localhost:53445",//應(yīng)用啟動(dòng)的Url路徑。
            "sslPort": 0  //啟用SSL的端口
          }
        },
        "profiles": {
          "IIS Express": {
            "commandName": "IISExpress",
            "launchBrowser": true, //是否在瀏覽器中啟動(dòng)
            "environmentVariables": { //將環(huán)境變量設(shè)置為鍵/值對(duì)
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          },
          "WebApplication1": {
            "commandName": "Project",
            "dotnetRunMessages": "true",
            "launchBrowser": true,
            "applicationUrl": "http://localhost:5000",
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          }
        }
      }
      
      

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

      • IISExpress
      • IIS
      • Project

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

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

      image-20210318151112999

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

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

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

      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 上,環(huán)境變量和值不區(qū)分大小寫。 默認(rèn)情況下,Linux 環(huán)境變量和值要區(qū)分大小寫 。
      

      三、應(yīng)用事例

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

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

      {
        "iisSettings": {
          "windowsAuthentication": false,
          "anonymousAuthentication": true,
          "iisExpress": {
            "applicationUrl": "http://localhost:53445",
            "sslPort": 0
          }
        },
      
        "profiles": {
          "IIS Express": {
            "commandName": "IISExpress",
            "launchBrowser": true,
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          },    
          "WebApplication-Development": {
            "commandName": "Project",
            "dotnetRunMessages": "true",
            "launchBrowser": true,
            "applicationUrl": "http://localhost:5000",
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          },
          "WebApplication-Production": {
            "commandName": "Project",
            "dotnetRunMessages": "true",
            "launchBrowser": true,
            "applicationUrl": "http://localhost:5000",
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Production"
            }
          }
        }
      }
      

      launchSettings.json

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

      launchSettings.json

      在不同的配置文件中定義一個(gè)配置項(xiàng),取值不同,如下圖所示:

      appsettings.Development.json

      appsettings.Production.json

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

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

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

      image-20210318161838544

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

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

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

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

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

      參考文章:

      .NET Core部署到linux(CentOS)最全解決方案,常規(guī)篇

      .NET Core部署到linux(CentOS)最全解決方案,進(jìn)階篇(Supervisor+Nginx)

      .NET Core部署到linux(CentOS)最全解決方案,高階篇(Docker+Nginx 或 Jexus)

      .NET Core部署到linux(CentOS)最全解決方案,入魔篇(使用Docker+Jenkins實(shí)現(xiàn)持續(xù)集成、自動(dòng)化部署)

      一網(wǎng)打盡,一文講通虛擬機(jī)VirtualBox及Linux使用

      常用linux命令,開發(fā)必備

      全新跨平臺(tái)版本.NET敏捷開發(fā)框架-RDIFramework.NET5.0震撼發(fā)布

      一文講通.NET Core部署到Windows IIS最全解決方案

      在 ASP.NET Core 中使用多個(gè)環(huán)境


      一路走來數(shù)個(gè)年頭,感謝RDIFramework.NET框架的支持者與使用者,大家可以通過下面的地址了解詳情。

      RDIFramework.NET官方網(wǎng)站:http://www.rdiframework.net/

      RDIFramework.NET官方博客:http://blog.rdiframework.net/

      特別說明,框架相關(guān)的技術(shù)文章請(qǐng)以官方網(wǎng)站為準(zhǔn),歡迎大家收藏!

      RDIFramework.NET框架由海南國思軟件科技有限公司專業(yè)團(tuán)隊(duì)長期打造、一直在更新、一直在升級(jí),請(qǐng)放心使用!

      歡迎關(guān)注RDIFramework.NET框架官方微信公眾號(hào)(微信號(hào):guosisoft),及時(shí)了解最新動(dòng)態(tài)。

      使用微信掃描二維碼立即關(guān)注

      微信二維碼

      posted @ 2021-03-30 13:49  .NET快速開發(fā)框架  閱讀(3417)  評(píng)論(3)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲一区二区三区四区| 美女胸18大禁视频网站| 亚洲人成网站18禁止无码| 亚洲美免无码中文字幕在线| 影音先锋啪啪av资源网站| 四虎成人精品无码永久在线| 国产高清一区二区不卡| 国产亚洲AV电影院之毛片| 农村肥熟女一区二区三区| 男女扒开双腿猛进入爽爽免费看| 黎城县| 麻豆麻豆麻豆麻豆麻豆麻豆| 一区二区三区精品不卡| 亚洲av午夜福利精品一区二区| 最新亚洲国产手机在线| 人妻精品人妻无码一区二区三区| 国产aⅴ夜夜欢一区二区三区| 99久久婷婷国产综合精品青草漫画 | 男人下部进女人下部视频| 国产黄色一区二区三区四区| 深夜在线观看免费av| 狠狠综合久久综合88亚洲| 亚洲男女羞羞无遮挡久久丫 | 亚洲最大福利视频网| 久久婷婷综合色丁香五月| 亚洲爆乳少妇无码激情| 自贡市| 人妻中文字幕不卡精品| 国产亚洲精品自在久久vr| 中文字幕无码人妻aaa片| 国产亚洲一区二区三区四区| 337p粉嫩大胆噜噜噜| 国产短视频一区二区三区| 亚洲成人av在线高清| 日韩中文字幕有码av| 口爆少妇在线视频免费观看| 久久亚洲精品无码播放| 太和县| 亚洲日韩精品无码一区二区三区 | 国产精品一码在线播放| 亚洲av第二区国产精品|