0

使用将 .NET Core 2.1 应用程序部署到服务器后,访问页面时出现以下错误:

HTTP 错误 502.5 - 进程失败

按照微软在同一页面上总是有用的链接(咳嗽),我检查了事件视图日志,它指出:

物理根目录为“D:\inetpub\vhosts\BLAH.com\httpdocs\”的应用程序“MACHINE/WEBROOT/APPHOST/BLAH.COM”无法使用命令行“dotnet.\blah.dll”启动进程,错误代码 = '0x80070002: 0。

该消息不仅没有帮助,而且完全无关紧要。我尝试在 web.config 中启用 Web 应用程序的日志记录:

<aspNetCore requestTimeout="23:00:00" processPath="dotnet" arguments=".\blah.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" startupTimeLimit="3600" />

奇怪的是,在我授予 IWPD 进程权限之前,没有在 Log 目录中创建任何文件。它创建的文件不在指定的 stdout 目录中,而是在父日志目录中。他们也是空的。

我使用以下命令从命令行运行 Web 应用程序:

dotnet .\blah.dll

该应用程序似乎正在运行,我可以在屏幕上看到一些消息,但在访问该站点时仍然遇到相同的 502.2 错误,而日志中没有其他信息。我遵循了 ASP.NET Core 2.1 的故障排除步骤,它提到了这一点:

如果向应用发出请求时出现错误,请向 Kestrel 侦听的主机和端口发出请求。使用默认主机并发布,向http://localhost:5000/发出请求。如果应用程序在 Kestrel 端点地址上正常响应,则问题更可能与反向代理配置有关,而不太可能出现在应用程序内部。

我从命令行运行 Web 应用程序并尝试使用http://localhost:5000访问它。我终于能够访问该站点,但我仍然通过 IIS 收到相同的 502.2 错误。

很明显 IIS 和 Kestrel 没有相互通信。我不明白为什么有两个 Web 服务器以及如何让它们相互通信。

4

1 回答 1

3

解决了这个问题。服务器的 IIS 模块的安装程序不会重新启动或警告用户重新启动 IIS。重新启动 IIS 加载了必要的模块。显然,这是一个其他名称的错误。

于 2018-08-24T17:43:39.513 回答