iT邦幫忙

0

ASP.NET Core 發佈至本機IIS

菜鳥想問各位資深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 發行」的功能
0

已嘗試方法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>

就這樣繼續了官網"匯入發行設定"的步驟

結果:
驗證連線失敗
1
還是說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
Duran Hsieh
iT邦新手 2 級 ‧ 2021-01-25 10:20:01
最佳解答
  1. 先確認是否有安裝 runtime,因為你是網站,所以記得安裝 hosting bundle Download .NET Core 3.1 Runtime
  2. 確認 IIS 上的網站所屬於的應用程式集區 (appPool) > 基本設定 > .NET CLR Version 選擇 No Managed Code

https://ithelp.ithome.com.tw/upload/images/20210125/200914941yroaCmcQc.png

  1. 因為你是本地佈署,Visual Studio 2019 > 右鍵點選網站 > 發佈,用檔案位置發佈即可,位置選擇該站台的實體路徑。 發佈時目標記得選擇 win-x64 或 win10-x64
    https://ithelp.ithome.com.tw/upload/images/20210125/20091494ey3I397GUY.png

附註 1:強烈不建議在 Prod 環境安裝 Visual Studio。
附註 2:若你本機是 windows 10,直接透過檔案位置發佈即可
附註 3:若環境是 windows server (非本地環境),建議使用 web deploy

  1. 若沒記錯,Web Deploy 屬於 Windows Server 上功能,安裝後在提供該伺服器參數,即可從Visual Studio 發佈上去。理所當然,你也需要在 IIS 內建立一個使用者帳號密碼 (非電腦使用者),才能開始佈署。 (已經用 Azure DevOps, jenkins, GitLab, TeamCity 自動化佈署很久了,若有描述錯誤請多包涵)

https://ithelp.ithome.com.tw/upload/images/20210125/20091494SvzAE8IPnO.png

  1. Windows 10 IIS 網站佈署好後,傳統方式可以用 deploy > export application,再到 Windows server 上 import application。

若有錯誤或任何建議,歡迎一起討論 :)

0
eggeggss
iT邦新手 5 級 ‧ 2021-01-25 07:12:49

都用dot net core了也該脫離IIS的束縛了

0
paiyuliu
iT邦見習生 ‧ 2021-01-25 08:53:02

發佈我目前看到的資源都是用Visual Studio發佈,或下Shell指令佈署(https://docs.microsoft.com/zh-tw/dotnet/core/deploying/deploy-with-cli)

在IIS下抓程式進來佈署我還沒看過,我覺得你可以繼續研究
不過以持續佈署(CI/CD)的觀念來看
應該比較不適合直接在SERVER上面動作
不小心就把IIS弄掛就好笑了!

觀念有錯再麻煩指正!

0
hauser
iT邦新手 5 級 ‧ 2021-01-25 09:16:48

Web Deploy只有Windows Server才有,可以先確認一下Windows版本
IPv4位置沒反應?
那使用http://localhost:82呢?
如果localhost有反應那就請先檢查Port是否有開放連線

0
賽門
iT邦超人 1 級 ‧ 2021-01-25 10:26:29

不知這篇文有沒有參考過, 我之前是參照這篇文部署.NET Core的網站, 提供你參考.
不過, 以國外大神們的做法, 應該不會用IIS來做網站平台了.
你可以考慮用開源的網站平台來建站.

0
I code so I am
iT邦高手 1 級 ‧ 2021-01-25 12:39:01
  1. 安裝 NET Core 裝載套件組合安裝程式:
    https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore-5.0.2-windows-hosting-bundle-installer

  2. 產生佈署的目錄,有兩個方式:

  • 在VS中專案按滑鼠右鍵,點選【發行】,如下圖:
    https://ithelp.ithome.com.tw/upload/images/20210125/20001976njTQfFefbj.png

https://ithelp.ithome.com.tw/upload/images/20210125/20001976mZdkaUOfXT.png

  • 或直接執行 dotnet publish。
  1. 在IIS的預設網站,按滑鼠右鍵,點選【新增應用程式】,對應上述目錄即可。
    https://ithelp.ithome.com.tw/upload/images/20210125/20001976cMmczI3FTv.png

  2. 若出現 500.19 錯誤,將該目錄安全性授予 IIS_IUSRS 群組。
    https://ithelp.ithome.com.tw/upload/images/20210125/20001976qvdRXxSJzs.png

我要發表回答

立即登入回答