[.NET Core] 將專案發行至IIS

繼上一篇關於組態設定後,再來測試一下如何將專案發行至IIS,依照官網說明,需先安裝如下:
  1. Install the .NET Core 執行時所需要的Library,Runtime  https://www.microsoft.com/net/download
    ,裝完IIS需重啟。
  2. Web Deploy v3.6
  3. Install HttpPlatformHandler 這是給 Web Deploy使用,請參考

IIS 設定


IIS 新增Site並將Pooling的CLR Version改成 No Managed Code

image

建立完後,為了先方便測試,我直接將位置指向程式原始檔的目錄,執行後出現錯誤如下:

image

這是因為web.config上的啟動參數路徑不對,在開發工具執行時會將參數傳入,如下
image

在IIS若要測試,可以手動調整如下
image

註:若是使用發行的方式,此設定會自動改成發行後的相對路徑,不用再手動調整
image

發行程式


使用Web Deploy的方式部署至IIS,如下圖設定,

image

同樣的Site,使用非.NET Core的可以發行,但使用.NET Core的卻會出現錯誤
image

觀察一下兩邊發行檔的差異後,.NET Core多了一個使用Power Shell的設定
image

檢視PublishProfiles目錄,果然有一個對應的命令檔IIS-publish.ps1,.NET Core會使用此檔案的命令來作發行,不像之前的版本是直接取pubxml的參數後,來發行。

image

  • IIS-publish.ps1 :在建立發行Profile時,會產生第一次,讓開發人員可以作調整。
  • publish-module.psm1:每次發行都會重新產生的發行模組,不可手動修改此檔,IIS-publish.ps1參考此模組。
檢視publish-module.psm1的原始檔後,發現它在MSDeploy的參數AuthType預設為Basic,若照我的發行設定,應為NTLM。根據此問題,
在IIS-publish.ps1 加入設定後,就可以正常發行到IIS上了。

image

這個網誌中的熱門文章

IIS 設定只允許特定IP進入