菜鳥想問各位資深IT
最近在用練習ASP.Net core寫Web API
想要以本機為伺服器在IIS做發佈
不過在Google上查詢嘗試了很多方法都沒有用
希望有經驗的各位可以順路看一下我做設定時可能漏掉的問題點
全部都是以VS 2019的ASP.NET Core 3.1的API範本(WeatherForecast Web API)
自行做測試
下述嘗試內容出現的IP address都是本機的IPv4 位址
已嘗試方法1.
參照網站
進行嘗試
結果:
在IIS管理員點瀏覽網站之後
出現
"這個網頁無法正常運作
192.168.100.14未傳送任何資料。
ERR_EMPTY_RESPONSE"
不用說,PostMan也沒有回應
已嘗試方法2.
Microsoft官網的步驟
以將ASP.Net core匯入Windows Server為目的的說明步驟
過程:
Web Platform Installer無法順利安裝Web Deploy 3.6 for Hosting Servers
以離線方式安裝
(參照)
才順利安裝完畢
結果:
沒有如預期出現「啟用Web Deploy 發行」的功能
已嘗試方法3.
既然IIS不肯讓我點「啟用Web Deploy 發行」的功能的話
自己做出 .publishsettings設定檔的話呢?
我就天真的做出了一個設定檔
<?xml version="1.0" encoding="utf-8"?>
<publishData>
<publishProfile
publishUrl="http://192.168.100.14:82//msdeploy.axd"
msdeploySite="Default Web Site"
destinationAppUrl="http://192.168.100.14:82//"
mySQLDBConnectionString=""
SQLServerDBConnectionString=""
profileName="Default Settings"
publishMethod="MSDeploy"
userName="myhostname\myusername" />
</publishData>
就這樣繼續了官網"匯入發行設定"的步驟
結果:
驗證連線失敗
還是說Username欄位需要做設定嗎?
已嘗試方法4.
回歸原點
我嘗試調整了"IIS管理員"→"Default Web Site"的"編輯站台繫結"
從"全部未指派"改成下拉出來的IP address
結果:
在IIS管理員點瀏覽網站之後
出現
"這個網頁無法正常運作
192.168.100.14未傳送任何資料。
ERR_EMPTY_RESPONSE"
已嘗試方法5.
我嘗試調整了"IIS管理員"→"WebAPI_Default_test"(欲嘗試的Web API)
的"編輯站台繫結"
從IP address改成下拉出來的"全部未指派"
結果:
在IIS管理員點瀏覽網站之後
出現
"找不到 localhost 網頁
找不到此網址的網頁:http://localhost:82/
HTTP ERROR 404"
已嘗試方法6.
以HTML檔做測試(內容只有123),
"編輯站台繫結"→IP位置 = 全部未指派
結果:
正常顯示
"編輯站台繫結"→IP位置 = 192.168.100.14
結果:
顯示
"這個網頁無法正常運作
192.168.100.14 未傳送任何資料。
ERR_EMPTY_RESPONSE"
已嘗試方法7.
參照這個網站的方式嘗試
結果:
顯示
"這個網頁無法正常運作
192.168.100.14 未傳送任何資料。
ERR_EMPTY_RESPONSE"
以上是我嘗試過的事情
現在還沒得出解法
希望有經驗的各位可以有過類似的經驗的話可以給菜鳥一個提示
謝謝
附註 1:強烈不建議在 Prod 環境安裝 Visual Studio。
附註 2:若你本機是 windows 10,直接透過檔案位置發佈即可
附註 3:若環境是 windows server (非本地環境),建議使用 web deploy
若有錯誤或任何建議,歡迎一起討論 :)
發佈我目前看到的資源都是用Visual Studio發佈,或下Shell指令佈署(https://docs.microsoft.com/zh-tw/dotnet/core/deploying/deploy-with-cli)
在IIS下抓程式進來佈署我還沒看過,我覺得你可以繼續研究
不過以持續佈署(CI/CD)的觀念來看
應該比較不適合直接在SERVER上面動作
不小心就把IIS弄掛就好笑了!
觀念有錯再麻煩指正!
Web Deploy只有Windows Server才有,可以先確認一下Windows版本
IPv4位置沒反應?
那使用http://localhost:82呢?
如果localhost有反應那就請先檢查Port是否有開放連線
不知這篇文有沒有參考過, 我之前是參照這篇文部署.NET Core的網站, 提供你參考.
不過, 以國外大神們的做法, 應該不會用IIS來做網站平台了.
你可以考慮用開源的網站平台來建站.
安裝 NET Core 裝載套件組合安裝程式:
https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore-5.0.2-windows-hosting-bundle-installer
產生佈署的目錄,有兩個方式:
在IIS的預設網站,按滑鼠右鍵,點選【新增應用程式】,對應上述目錄即可。
若出現 500.19 錯誤,將該目錄安全性授予 IIS_IUSRS 群組。