可以通过控制台但不能通过 IIS 托管 ASP.NET 核心站点

Can host ASP.NET Core site through console but not through IIS

解决方案和服务器配置:

我开发了一个相当简单的 ASP.NET 核心应用程序。它由一个核心项目文件组成,于 Visual Studio 2017 年创建和构建。目标框架是 .NETCoreApp 1.1,平台目标是 x64.

它还包含两个 class 库项目,目标框架 .NETStandard 1.4 和平台目标 x64

由于 VS2017 的 Web 部署中的错误,我正在发布到文件系统,然后使用 FTP.

PublishOutput 的内容复制到我的 IIS 应用程序目录

我的服务器是 Windows Server 2012 R2,带有所有相关的服务包和更新。已安装 DotNet Core 运行时。

问题:

当我在浏览器中导航到我的站点 URL 时,我遇到一个乏味的 HTML 页面,它指示以下内容:

HTTP Error 502.5 - Process Failure

Common causes of this issue: (lists things)
Troubleshooting steps: (lists things)
For more information visit http://go.microsoft.com/fwlink/?linkid=808681

采取的解决步骤:

不用说了,我已经按照说明解决了。 The link 给出的错误在 平台与 RID 冲突 .

标题下显示

事件查看器有一个错误条目,内容如下:

Application 'MACHINE/WEBROOT/APPHOST/MY SITE' with physical root 'C:\inetpub\wwwroot\mysite\' failed to start process with commandline "dotnet" .\MySite.dll', ErrorCode = '0x80070002 : 0.

通过在我的站点文件夹中打开 cmd.exe 的实例,我可以执行 dotnet mysite.dll 并且它运行,托管在 http://localhost:5000 上。正如预期的那样,我可以在浏览器中导航到该站点。

我的Program.cs如下:

var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();

host.Run();

我的 Startup.cs 大部分都是无趣的。除了一些服务定义,我的管道是:

app.UseCookieAuthentication();
app.UseRedditMiddleware(); // authentication middleware, custom
app.UseMvc();
app.UseStaticFiles();

未设置 dotnet 文件夹的系统范围 %PATH%(IIS 以不同用户身份运行),或者您在安装 ASP.Net 核心服务器包后没有重新启动服务器。您可以在我的 post about running ASP.NET Core applications with IIS 中找到更多故障排除步骤。