透過 Visual Studio 將專案發佈至 IIS 伺服器

  由於踏入 ASP.NET/C# 沒很久,很多基本的東西都要靠自己去摸索,有時對別人來說是理所當然的東西,我可能會花上不少時間去研究。既然時間花了,就會想把過程記錄下來,讓像我一樣的人可以省去點時間。

  這次是在完成 QRCode 產生器的 API 後,摸不著頭緒要怎麼把程式變成 IIS 可以吃的內容,雖然半年前做過一次,但腦袋早已空空,Je。

《建置與發佈》
先將專案的「建置組態」改為 “Realese”。以建置出適合部署於正式環境的結果。
(相對於 Realese,Debug 組態所建置出的結果,會包含除錯資訊,適合用於開發和測試。)


在專案按右鍵,選擇「建置」。


建置完成後,一樣在專案按右鍵,選擇「發佈」。以準備供 Web 伺服器使用的檔案結構。


由於我是以手動複製檔案到 IIS 的形式來發佈,所以發佈的「目標」會選擇「資料夾」。


最後再選擇「發佈」,便會在「目標路徑」產生要複製到 IIS 的程式。

《IIS 佈建》
在一般情形下,對「站台」按右鍵新增一個站台,並指向存有剛剛發佈檔案的資料夾即可。


但我這次是想在既有的站台下,新增一個子網站 (dad.abc.com.tw/son/) 的概念,因此要在既有站台按右鍵,選擇「新增應用程式」,接著一樣指向存有剛剛發佈檔案的資料夾即可。


「應用程式」這邊我卡關許久,我本以為是要新增「虛擬目錄」,但網站一直跑不起來,後來總算靠 ChatGPT 解圍 (感恩滿載)。「虛擬目錄」會使用父層站台資源,比較適合放靜態的圖檔、css 檔等,如果拿來放 ASP 網站,可能會有一些比較麻煩的相對路徑要處理。
「應用程式」則是等同一個獨立的站台,資源都是獨立的,只有域名部份是掛在父層底下而已 (dad.abc.com.tw/son/),所以我轉換為應用程式後,網站就 work 了,程式根本不用針對相對路徑的狀況去做調整。


此外,如果是用 ASP.NET Core 開發,由於 ASP.NET Core 不直接依賴 IIS 中的 .NET CLR (Common Language Runtime),而是使用自己的 Kestrel 伺服器處理請求,然後透過 IIS 作為反向代理,因此,針對 ASP.NET Core,通常會將應用程式集區設為「沒有受控碼」,不啟動 .NET CLR,可節省資源。

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tu comentario.