這篇文章主要介紹了在IIS上部署ASP.NET Core專案的圖文方法,需要的朋友可以參考下
概述
與ASP.NET時代不同,ASP .NET Core不再由IIS工作進程(w3wp.exe)託管,而是使用自託管Web伺服器(Kestrel)運行,IIS則是作為反向代理的角色轉發請求到Kestrel不同連接埠的ASP.NET Core程序中,接著就將接收到的請求推送至中間件管道中去,處理完你的請求和相關業務邏輯之後再將HTTP響應數據重新回寫到IIS中,最終轉達到不同的客戶端(瀏覽器, APP,客戶端等)。而設定檔和流程都會由些許調整,中間最重要的角色便是AspNetCoreModule,它是其中一個的IIS模組,請求進入到IIS之後便立即由它轉發,並迅速重定向到ASP.NET Core專案中,所以這時候我們無需設定應用程式集區來託管我們的程式碼,它只負責轉發請求而已。
部署之前要確保你的IIS上已經安裝了AspNetCoreModule託管模組,如果沒有的話,點擊這裡進行下載並安裝
一、安裝IIS
1、在控制台→程式→啟用或關閉Windows功能→勾選Internet Information Services以及Web管理工具下的IIS管理控制台
二、發布項目
1、發布我們上一篇建好的ASP.NET Core API項目,然後選擇IIS,新建一項發布配置
2、發布方法選擇檔案系統,然後設定一個發佈路徑
3、設定檔可以根據你線上、線下的環境進行選擇,因為是基於.NET Core,所以目標框架為netcoreapp1.1,然後保存發布即可
##4、當然了,你還可以基於CLI的Publish指令進行發布,只需切換到Light.API根目錄下,輸入以下指令即可dotnet publish --framework netcoreapp1.1 --output "E:\Publish" --configuration Release
1、新增一個網站,設定名稱,並將路徑指向你剛才發佈的資料夾,然後啟動網站即可
2、設定應用程式集區的.NET CLR版本為“無託管程式碼”,因為剛才也說了,IIS是作為一個反向代理的角色,並不需要它來託管程式碼
3、OK,大功告成,瀏覽我們的網站。
此時我的內心是崩潰的,沒有任何有用的提示信息,看來只能自己動手查看應用程式的運行日誌了
# 4.設定IIS的日誌記錄方式為日誌檔案和ETW事件
#5、重新造訪網站,然後開啟Windows應用程式日誌,你會看到這樣一則訊息。意思是說你的應用程式已經由PID為3236的進程啟動,並且在25636的連接埠上監聽著。
我打開任務管理員查看了一下,說的很對。應該是一切正常才對啊,那為啥訪問網站是404呢。
糾結了半天,原來是因為網站沒有自動重定向到/swagger/ui頁面,重新訪問:http://192.168.1.105/swagger/ui,你會看到熟悉的畫面
6、最後一點,其實你還可以透過CLI來運行你發布的程序,切換到你發布資料夾下,輸入以下命令:
dotnet Light.API.dll看到這個提示,那麼表示你成功了。試著造訪:http://localhost:5000/swagger/ui
#
而此時你再回過頭來看任務管理器,那麼就會又多了一個dotnet的進程
#寫在最後
#至此,整個IIS的搭建已經完成,不知道你是否有所收穫。接下來不知道要把它發佈到Linux上,會有什麼樣的坑。不管怎樣,你的每一步,回過頭來看,都是值得的!
以上是在IIS上部署ASP.NET Core專案的步驟的詳細內容。更多資訊請關注PHP中文網其他相關文章!