使用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