通过 Visual Studio 将项目发布至 IIS 服务器

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

这次是在完成 QRCode生成器的API 后,不知道该怎么把程序变成IIS可以使用的内容,虽然半年前做过一次,但脑子早已空白,Haha。

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


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


建置完成後一樣在專案按右鍵選擇「發佈」以準備供 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 作為反向代理,Therefore,針對 ASP.NET Core通常會將應用程式集區設為「沒有受控碼」不啟動 .NET CLR可節省資源

留下回复

您的电子邮件地址不会被公开. 必填项已标注 *

本网站使用 Akismet 来减少垃圾评论. 了解您的评论数据如何被处理.