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

时间:2018-06-23 06:38:10

标签: c# .net windows iis deployment

我在配置.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>

1 个答案:

答案 0 :(得分:2)

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

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

主机捆绑包包括用于IIS的ASP.NET Core模块,该模块允许IIS启动。没有ASP.NET Core,应用程序将无法在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>从层次结构中清除所有处理程序。

<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上托管的更多详细信息以及此处的静态文件的其他一些配置: