前言

本篇文章記錄在 .Net Core 開發 Web application 過程中,如何在佈署至 IIS 過程中,因應
不同佈署環境進行環境變數的設定,並且取得正確的 appsettings.json。若有說明錯誤或
建議,也希望各位前輩不吝指教。

本篇內容如下:
  1. 如何設定環境變數 (how to set environment variable)
    1.1  windows 環境變數設定 (set environment variable on windows)
    1.2  IIS 內環境變數設定 (set environment variable on iis)
  2. 使用 tag helper 判斷目前運作環境

介紹

1.如何設定環境變數 (how to set environment variable)

1.1  windows 環境變數設定 (set environment variable on windows)
Step.1 開始 -> 右鍵點選我的電腦 -> 內容 -> 進階系統設定
            Start -> Right this computer -> Properties -> Advanced system settings


Step.2 在進階頁籤 -> 環境變數 -> 加入 -> 輸入:
            變數名稱:ASPNETCORE_ENVIRONMENT
            變數值:Development
            On Advanced Tab -> environment variable -> New
            Variable name: ASPNETCORE_ENVIRONMENT
            Variable value: Development



1.2  IIS 內環境變數設定 (set environment variable on iis)

Step.1 展開站台,點選網站 -> 選擇設定編輯器
           Expand site and click the web site -> click Configuration Editor


Step.2 從下拉選單(section)選擇 "system.webServer" -> "aspNetCore"
           Select "system.webServer" -> "aspNetCore" from section dropdownlist


Step.3 從下拉選單(from)選擇 project.web.config,點選 environmentVariables
           Select "project.web.config" from from dropdownlist,click environmentVariables


Step.4 點選加入,輸入
           變數名稱:ASPNETCORE_ENVIRONMENT
           變數值:Development
           Click Add..
           Variable name: ASPNETCORE_ENVIRONMENT
           Variable value: Development


Step.5 從下拉選單(from)選擇 ApplicationHost.config...,點選 environmentVariables
           Select "ApplicationHost.config..." from from dropdownlist,click environmentVariables

Step.6 點選加入,輸入
           變數名稱:ASPNETCORE_ENVIRONMENT
           變數值:Development
           Click Add..
           Variable name: ASPNETCORE_ENVIRONMENT
           Variable value: Development


Step.7 儲存變更
            Save changes


2.使用 tag helper 判斷目前運作環

Step.1 開啟project.json,dependencies內加入:
           Open project.json and add lib under dependencies as below:
           "Microsoft.AspNetCore.Mvc": "1.0.0",
          "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0",


Step.2 HomeController 內加入 "Detail" action
           Add "Detail" action under HomeController


Step.3建立 Views 資料夾、 Home 資料夾與 Detail.cshtml,並加入下列程式碼:
          Create Views folder、 Home folder 與 Detail.cshtml, then add codes as below


Step.4  1.如果在 Visual Studio 進行測試
               右鍵點選 Project -> 內容,選擇 Debug頁籤,確認Environment Variables 設定。
            2. 如果佈署於 IIS 進行測試:
                 您可以略過這個步驟。
            1. On Visual Studio:
                Right click project -> properties, select "debug" tab, make sure  the Environment
                Variables setting.
            2. Publish to IIS:
                Please skip this step.


Step.5 開啟瀏覽器,輸入網址 "http://websiteUrl/Home/Detail",即可知道目前環境
           Open Browse and enter url  "http://websiteUrl/Home/Detail" ,then you will see current
           enviroment.




心得


感謝公司的專案與辛苦的 Team Leader,近一個月讓我有機會接觸ASP .Net Core 與 CI的研
究與實作,學了不少的知識,感覺非常的充實。許多在開發過程中遭遇到的問題與解決方
法都是寶貴的經驗,但因為近期專案進度因素,只能先記錄簡單的相關內容,待進度告一
段落再來做分享。
最後也謝謝團隊成員的體諒,在這個月個人狀態不好的情況下,給予適度的關懷與
包容。


參考資料

1. https://jessedotnet.com/2016/05/05/asp-net-core-1-0-asp-net-5-environment-variables/
2. http://stackoverflow.com/questions/31049152/asp-net-5-publish-to-iis-setting-aspnet-env-variables
3. https://stackoverflow.com/questions/32301840/how-to-set-asp-net-5-environment-variables-on-production-environment/32326666#32326666
4.http://stackoverflow.com/questions/37858312/dotnet-publish-doesn%C2%B4t-publish-correct-appsettings-env-environmentname-json