什麼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\PublishOutput
或 bin\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