.NET Core之IIS架站的各種坑

  • 4233
  • 0
  • 2018-04-21

什麼502.5、500.19還有Error 0x8007000d真的都令人很頭大...

 

本文假設讀者已經讀過其它像這樣很詳細文章教學微軟的Doc,然後想找較新版本的.NET Core來裝在Server上時卻發生各種毛病的情況

長話短說,移除任何與.net core相關的安裝程式,再安裝.NET Core Hosting Bundle就一切搞定了

但問題就在於Hosting Bundle的載點真的難找,必需先到All Downloads頁面,在Runtime中找點下preview的版本

 

再點選Windows那區的"Hosting Bundle Installer"。前面那幾個Installer非常誘人,不料它安裝後就是各種坑的起頭,一個接一個永遠解不完的錯誤...

安裝Hosting Bundle時會同時幫你裝上.NET Core Runtime x64, x86,以及部份的SDK。

裝完後必把IIS服務重啟才會生效 - 在cmd下執行

net stop WAS /y
net start W3SVC

 

接下來可以參考上面的文章來設定一個沒有 Managed 程式碼的應用程式集區

若發生500.19之於因為權限不足而無法讀取檔案的話,除了新增IIS_IUSRS的讀取權限之外,還可以找{電腦名稱/Users}來新增。

 

若IIS上執行時還是出現其它5xx的錯誤的話,請在Server上用dotnet的cli來檢查它執行時有沒有印出什麼Error

假設專案名為WebApplication1,請先確定你複製到Server的發佈資料夾中同時包含了WebApplication1.dll、appsettings.json及web.config

通常會是從bin\Release\PublishOutputbin\Debug\netcoreapp2.0\publish複製過來

然後開啟cmd,cd到那個目錄(另一個坑 - 不然會讀不到同資料夾下appsettings.json中的ConnectionStrings之類設定),執行

dotnet WebApplication1.dll

接下來就會看到Error: xxxxxx,像這一例是少了些SDK導致

如果它是正常執行並印出Now listening on: http://localhost:5000的話,可以到事件檢視器(Win+R, eventvwr.msc)尋找與IIS相關的錯誤記錄

下面這例子我最後的解法是.NET Core全部移除並刪掉整個C:\Program Files\dotnet,然後安裝Hosting Bundle