只有累積,沒有奇蹟

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:

  • [VisualStudio] Visual studio 2019 中的 Preview Feature前言  在 ASP.NET Core 3.0 Preview 體驗 文章中有提到,Visual Studio 預設會以穩定的 SDK 版本為主,也就是想使用 Preview 需要透過設定才能看的到,前幾天在 FB 社團看到有人詢問下載完 ASP.NET Core 3.0 後,在 Visual Studio 2019 開新專案卻無法選到 3.0 專案範本,這篇文章簡單記錄新版 VS 2019 如何設定使用 Preview SDK 的方式與… Read More
  • [CheatSheets] Visual Studio 快捷鍵 前言  工欲善其事,必先利其器,以下為 Visual Studio 2017 快捷鍵小抄圖 source  visual studio 2019 keyboard-shortcuts Cheat Sheet of handy keyboard shortcuts  … Read More
  • [NETCore] Polly 重試機制搭配 jitter 策略Jitter 策略 上一篇 [NETCore] 使用 Polly 實現重試 (Retry) 策略 分享了使用 Polly 的重試 API 幫助我們達到重試的功能,後續在尋找相關文件時看到重試時的一種策略 Jitter strategy,在高併發的情境下如果使用重試策略可能會影響到系統,若要解決用戶端因為同時間重試造成伺服器資源高峰的狀況,可以透過添加隨機時間來改善,另外在 Jitter: Making Things Bette… Read More
  • [VisualStudio] 設定 Resharper Cache 資料夾說明 身為一位專業的工程師使用 SSD 加速開發是必備要素之一,最近在開發時筆電一直跳出硬碟不足問題,在口袋不夠深無法升級更大的 SSD 狀況下只能找出占空間的殺手,在搶救硬碟大作戰中無意間發現 ReSharper 的 cache 也是頗佔硬碟空間,在查詢後在官方文件發現可以修改存放 ReSharper Cache 的位置,這篇就簡單紀錄操作的過程。 Cache 資料夾 首先在整理系統硬碟時發現 Resh… Read More
  • [.NETCore] Windows 如何更新環境變數 Environment Variable問題 在上一篇 ASP.NET Core - ENVIRONMENT 提到可以設定環境變數  ASPNETCORE_ENVIRONMENT  ,然後代碼中可以依據所設定的環境變數作相對應的邏輯處理,舉例來說如果是 Production 環境的話就關閉錯誤訊息畫面、產生系統監控...等行為,一般來說設定完環境變數 Environment Variable 都需要重啟電腦讓設定值生效,但是如果在 Pr… 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