【问题标题】:HTTP Error 502.5 running ASP.NET Core 2.0 app from IIS从 IIS 运行 ASP.NET Core 2.0 应用程序的 HTTP 错误 502.5
【发布时间】:2018-08-18 06:39:26
【问题描述】:

尝试从 IIS 运行我的 ASP.NET core 2.0 Web 应用程序时遇到 HTTP 502.5 错误。

我已经安装了 .NET Core Windows Server Hosting Bundle 并按照本文档https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/index?tabs=aspnetcore2x检查了我的所有 IIS 设置

web.config 如下所示。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\OscarWeb.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>

Windows 事件日志产生以下错误。

它是在 Windows Server 2012 R2 上运行的 IIS v6.2。 Web 应用程序是使用 ASP.NET Core 2.0 构建的。

当我按如下方式从命令行运行 dotnet 时,没有错误:

dotnet oscarweb.dll

【问题讨论】:

  • 安装托管包后是否重启了机器?
  • 我会试试看的。我们有用户在服务器上使用其他应用程序,因此需要在每个人都回家后重新启动。
  • 好吧,如果您不能/不想完全重启,您至少必须完全停止 IIS 服务(iisreset 还不够)。不记得我头顶上的命令,但应该很容易找到。但是,在 IIS 可以实际使用托管包安装的模块之前,必须发生其中的一个。
  • This github issue 表示 0x80070002 错误意味着“找不到文件”(“文件”可能丢失或 IIS 没有权限)。另外,请检查此issue on github > the sites were in a non-standard location and IIS did not have read rights to that folder. Changing the application pool to run as Administrator helps
  • @ChrisPratt 在周末重新启动后,您的建议已经奏效。 ASP.NET Core 2.0 应用程序现在可以完美运行。感谢您的建议。

标签: iis asp.net-core windows-server-2012-r2


【解决方案1】:

在这种情况下,您要做的第一件事是创建 logs 文件夹(如果它丢失)并检查生成的标准输出日志。

这可能是几个不同的事情,但从个人经验来看,我遇到的最常见问题是 IIS 没有足够的权限来运行它。在 IIS 中,您可以配置高级设置中使用的身份。如果它正在使用 ApplicationPoolIdentity 则将其更改为 LocalSystem 并查看它是否有效。然而,stdtout 文件中的日志将为您提供答案。

【讨论】:

    【解决方案2】:

    不确定您的 webconfig 是否完整。我相信 aspnetcore 标签也需要设置 ASPNETCORE_ENVIRONMENT 环境变量。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="dotnet" arguments=".\OscarWeb.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" >
            <environmentVariables>
                <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="YourRuntimeEnv" />
            </environmentVariables>
        </aspNetCore>
      </system.webServer>
    </configuration>
    

    【讨论】:

      【解决方案3】:

      解决这个问题(至少在我的情况下)是重新启动网络服务器。安装 .NET Core Windows Server Hosting Bundle 后,您需要重新启动服务器才能正确注册它们。

      感谢 Chris Pratt(我的问题下方的第一条评论)提出答案 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多