使用IIS時我得到了404。我按照正確的程序發布(這里)和部署,詳見此處。
花了一些時間才弄明白,但我最終在Rick Strahl博客文章中找到了答案。
基本上,在創建應用程序池時,以及將其設置為“No Managed Code”時,我還需要進入高級設置並將應用程序池標識設置為“網絡服務”。它在我的機器上的ApplicationPoolIdentity下很好,但在我部署到的機器上卻沒有。
因此,為清楚起見,我的完整程序是:
要創建包:
- 創建dotnet核心網站(我使用Visual Studio 2017)
-
發布。可以使用VS的發布功能,但我通過包管理器使用了CLR。命令是:
dotnet發布-c發布-r win-x64 - 自包含
我不得不使用win-x64標識符,因為我們必須與64位Windows Server 2008兼容。
部署:
- 在C:\ inetpub \ wwwroot中創建一個文件夾(例如'testsite')
- 獲取發布文件夾({root} \ bin \ Release \ netcoreapp2.1 \ win-x64 \ publish)的內容並將其復制到新的“testsite”文件夾(或等效文件夾)。
- 在主機上安裝dotnet核心運行時(不是SDK!)。
- 打開IIS。右鍵單擊“應用程序池”,然后“添加應用程序池”。創建一個.NET CLR版本設置為“無托管代碼”。
- (我的機器不需要這一步,但服務器確實這樣做了。)再次點擊應用程序池。右鍵單擊新的應用程序池,然后選擇“高級設置”。將身份更改為“網絡服務”(如上圖所示)。
- 返回頂級IIS,展開“默認網站”,右鍵單擊您網站的文件夾,然后選擇“轉換為應用程序”。選擇沒有托管代碼的新應用程序池。
- 以管理員身份打開命令提示符
iisreset
。您應該在安裝dotnet核心運行時之后第一次需要這個。 - 訪問該網站(例如http:// localhost / testsite)
轉自 https://stackoverflow.com/questions/38529123/asp-net-core-404-error-on-iis-10