[.net core 2]佈署到iis和切換不同環境的appsetting.json

[.net core 2]佈署到iis和切換不同環境的appsetting.json

前言

自從.net core開始,不管是佈署到iis或切換環境皆已不同於原本我們習慣的方式,而此篇就來記錄如何成功佈署到iis,如何設計不同環境的值,當我們佈署的時候自動切換,因為我們通常在開發的時候吃的db跟佈署到產品環境,吃的Data Base會不一樣,總不可能使用註解的方式來切換,接下來就看一下如何實現。

佈署

佈署方面.net core一樣可以使用單鍵佈署的方式,但是首先我們必須要先在佈署的主機安裝.net core的hosting bundle,下載完安裝之後我們到iis新建一個網站就跟往常差不多,但是我們選擇.net版本的時候就得特別注意,必須選擇的是沒有Managed程式碼

然後我們就可以在vs 2017建立單鍵佈署了,設定如下

接著就可以在vs的工具列直接按佈署了

佈署成功之後應可以看到在iis的目錄下有這些檔案

如何切換環境

在.net core之後,沒有了web.config了,用目前最主流的json格式來配置config檔,喜歡怎樣的名稱都自行定義,接著來看一下appsettings.json的程式碼,我自己在json檔新增了Custom的Env的字

appsettings.json

appsettings.Development.json

接著我希望在本機的時候,會吃到appsettings.json,而佈署到IIS的時候,則會吃到appsettings.Development.json,接著簡單來改造一下HomeController的部份

        IConfiguration _configuration;
        IHostingEnvironment _env;
        public HomeController(IConfiguration configuration, IHostingEnvironment env)
        {
            _configuration = configuration;
            _env = env;
        }

        public IActionResult Index()
        {
            ViewBag.Env = _env.EnvironmentName;
            ViewBag.CustomEnv = _configuration.GetSection("Custom")["Env"];
            return View();
        }

接著在到View的部份,把我們定義的變數顯示出來

@ViewBag.Url
@ViewBag.Env

先開起本機來觀察一下

不如我的預期,竟然吃到Development.json的config了,那是因為預設設定了Development了,來改變一下,改成Debug的

改完存檔之後,再重新整理一次畫面,就會看到我們現在吃的環境是Debug,吃到的也確實是Appsettings.json定義的IIS EXPRESS了

接著來設定一下遠端主機,.net core可以吃環境變數的設定,所以接著來為環境變數新增一個值吧,再此以windows 10做示例

成功之後,我們應該就能在iis上看到已經吃到正確的config了