繁体   English   中英

.net核心应用程序错误502.5如果在IIS中作为虚拟目录运行

[英].net core application error 502.5 if run as virtual directory in IIS

我在配置.net核心应用程序以在iis中作为虚拟目录工作时遇到问题。 如果我直接使用其端口启动.net核心应用程序,它可以正常工作。

我得到502.5响应,并在事件查看器中有此消息

Application 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE' with physical root 'C:\inetpub\wwwroot\' failed to start process with commandline ' ', ErrorCode = '0x80070057 : 0.

我已经删除了.net web.config中的父处理程序

<handlers>
            <remove name="httpPlatformHandler"/>
            <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
            <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
        </handlers>

要运行ASP.NET Core应用程序,请确保:

  • 拥有ASP.NET Core Web Hosting Bundle (服务器所需!)
  • 发布您的应用程序 - 应包含web.config
  • 将“发布”输出部署到服务器
  • 设置应用程序池
  • 将.NET Framework设置为none(可选但通常是个好主意)
  • 使用在虚拟文件夹中具有读取权限的帐户

托管软件包包括IIS的ASP.NET核心模块,允许IIS启动。 没有ASP.NET核心应用程序将无法在IIS上运行。

您还需要发布应用程序,该文件夹生成一个包含二进制文件和配置文件的最终输出文件夹,包括根目录中的web.config和包含内容的wwwroot根文件夹。 要测试你应该确保你可以从命令行运行你的应用程序:

dotnet yourMainAssembly.dll -c Release

如果这不起作用,请首先修复此问题,因为这基本上是IIS触发的内容。 一旦独立工作,您可以尝试使用IIS。

在Visual Studio中创建的ASP.NET Core项目自动包含web.config,并且应该包含在IIS下运行所需的所有内容。 对于基本设置,应该是您所需要的。 生成的web.config应该负责让您的应用运行。

如果您正在使用虚拟,则可能会遇到父端配置出现问题的问题,因为虚拟从父级继承设置。 如果是这种情况,请为您的应用程序池选择相同版本的.NET Framework,或与父级共享应用程序池。 或者,您可以使用<clear /> <handlers>部分中的<clear />清除层次结构中的任何处理程序。

<configuration>
  <system.webServer>
    <handlers>
      <clear>
      <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" startupTimeLimit="3600" requestTimeout="23:00:00">
      <environmentVariables />
    </aspNetCore>
  </system.webServer>
</configuration>

我有一篇博文,其中详细介绍了IIS上的托管以及静态文件的一些其他配置:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM