只有累積,沒有奇蹟

2019年4月15日 星期一

[.NETCore] Windows 如何更新環境變數 Environment Variable

問題
在上一篇 ASP.NET Core - ENVIRONMENT 提到可以設定環境變數  ASPNETCORE_ENVIRONMENT  ,然後代碼中可以依據所設定的環境變數作相對應的邏輯處理,舉例來說如果是 Production 環境的話就關閉錯誤訊息畫面、產生系統監控...等行為,一般來說設定完環境變數 Environment Variable 都需要重啟電腦讓設定值生效,但是如果在 Production 機器可能有多個站台架設在同主機時,重啟勢必會造成其他服務中斷狀況發生,這一篇就分享如何設定完環境變數後不用重啟的方法,若有問題或是錯誤的地方歡迎各位高手給予指導

如何解決 
首先,建立新專案並加入下列代碼,此代碼主要用途為顯示目前環境變數 Environment Variable 中  ASPNETCORE_ENVIRONMENT  所設定的值並透過 console write 顯示出來 
  1. using System;
  2.  
  3. namespace CoreConsoleApp
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. Console.WriteLine($"EnvironmentVariable is : {Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}");
  10. Console.ReadKey();
  11. }
  12. }
  13. }
目前系統中  ASPNETCORE_ENVIRONMENT  設定的值為 Development,因此在輸出值為 Development 
接著,我們把系統變數  ASPNETCORE_ENVIRONMENT  更新成 Production,在執行一次結果如下
可以發現輸出的值由於 Windows cache 的關係,並不會更新為 Production,過去遇到此問題時重新啟動電腦就可以抓到最新設定的值,但今天發現另一個方法可以不用重啟電腦達到相同效果,步驟如下
Step 1 : 開啟 cmd.exe
Step 2 : 輸入指令  refreshenv 
  1. Microsoft Windows [版本 10.0.17763.437]
  2. (c) 2018 Microsoft Corporation. 著作權所有,並保留一切權利。
  3.  
  4. C:\Users\marcustung\source\repos\CoreConsoleApp\CoreConsoleApp>refreshenv
  5. Refreshing environment variables from registry for cmd.exe. Please wait...Finished..
Step 3 : 關閉在重開 Visual Studio 2019,開啟後重新執行 console application 
成功輸出環境變數值 Production !

備註 : 使用  refreshenv  指令需先安裝 chocolatey,否則會找不到該指令 (謝謝 Jake 提醒 !! )

感想
這邊只是透過 Console Demo 執行  refreshenv  指令效果,在 Production 機器上如果是 IIS 站台或是應用程式集區可以停止後重新啟動來讀取最新環境變數值資訊,如果有遇到相同問題的朋友不妨參考看看此做法,就不用重新開機影響到同站台其他 Application 服務  :)

參考
Is there a command to refresh environment variables from the command prompt in Windows?

Related Posts:

  • [.NETCore] 安裝 Entity Framework Core前言 最近在開發專案時要在 .NET Core 下使用 ORM 進行資料庫操作,第一直覺當然是用微軟強大的 Entity Framework 來解決,但實際操作後發現在 ASP.NET Core 下建立 Entity Framework Core 目前沒有過去 .NET Framework 下 Entity Framework 6.x 操作上來的方便,這篇文章就來介紹安裝 Entity Framework … Read More
  • [.NETCore] ASP.NET Core DI 生命週期 LifeTime前言 最近在 Code Review 時主管提到關於 ASP.NET Core 的一些基本觀念,發現自己對於 .Core DI Service lifetime 部分有些模糊,在 .NET Core 中整個框架建立在 DI ( Dependency Injection) 之上,到處都可以看到 DI 的影子,因此決定寫篇文章釐清自己的觀念,若有問題或是有更推薦的方法歡迎提出一起討論或是給予指導。 .NET Core DI .NET … Read More
  • [.NETCore] ASP.NET Core 學習資源包 - awesome dotnetcore前言 最近比較多機會嘗試有興趣的新技術,在學習過程中勢必會遇到很多疑難雜症;像是最近新專案使用 ASP.NET Core 開發,有些觀念如果你 ASP.NET Framework 習慣了轉到新的會需要點時間,這時如果有份清單整理技術領域相關內容是在好不過的了;今天要分享的是 github 上的 awesome dotnet core,集合群眾的力量整理 ASP.NET Core 的學習資源與相關 Library 資訊,另外如果有好康的想要分享給大… Read More
  • [.NETCore] Entity Framework Core 初體驗 前言 前面兩篇文 安裝 Entity Framework Core、使用 EF Core Power Tool 分享了在 .NET Core 如何使用 EF Core 產生已存在 DB Table 模型物件,仔細回想一下分享內容過於片段可能無法讓人抓到重點,因此決定再寫一篇分享 EF Core DB First 在 .NET Core 中操作與設定,此篇文章包含新增下列項目 範例 .NET Core 專案 建立 DB Tab… Read More
  • [.NETCore] 安裝 Entity Framework Core - 使用 EF Core Power Tool前言 在上一篇介紹了 安裝 Entity Framework Core 文章中說明如何透過指令方式產生 DBContext 物件,今天在搜尋 EF Core 相關資料時發現 mkrt 大推薦的工具 - Visual Studio 2017 擴充功能 - EF Core Power Tools,原來除了指令之外也可以透過擴充工具達到同樣結果,打鐵要趁熱,這篇文章就來介紹如何使用 EF Core Power Tools,若有問題歡迎提出一起… Read More

3 則留言:

  1. 沒有這個指令 refreshenv

    回覆刪除
    回覆
    1. BTW, 測試 DOTNETCORE 重啟IIS APP POOL沒有用, 應該是 CORE不給IIS託管

      刪除
  2. Hi Jake, 內文未說明指令 refreshenv 需要先安裝 chocolatey 才可執行,已補上相關說明,謝謝你的提醒 :)

    回覆刪除

Copyright © 2025 m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com