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

C# .net核心应用程序错误502.5(如果在IIS中作为虚拟目录运行),c#,.net,windows,iis,deployment,C#,.net,Windows,Iis,Deployment,我在配置.net核心应用程序作为iis中的虚拟目录时遇到问题。 如果我直接用它的端口启动.NETCore应用程序,它可以正常工作 我收到502.5响应,在事件查看器中有此消息 Application 'MACHINE/WEBROOT/APPHOST/DEFAULT WEB SITE' with physical root 'C:\inetpub\wwwroot\' failed to start process with commandline ' ', ErrorCode = '0x80070

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

我收到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核心应用程序,请确保:

  • 具有(服务器所需的!)
  • 发布应用程序-应包括
    web.config
  • 将发布输出部署到服务器
  • 设置应用程序池
  • 将.NET Framework设置为无(可选,但通常是个好主意)
  • 使用在虚拟文件夹中具有读取权限的帐户
托管捆绑包包括允许IIS启动的IIS的ASP.NET核心模块。没有ASP.NET核心应用程序将无法在IIS上运行

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

dotnet yourMainAssembly.dll -c Release
如果这不起作用,请首先修复此问题,因为这本质上是IIS触发的。一旦独立的工作,你可以尝试使用IIS

在Visual Studio中创建的ASP.NET核心项目自动包含一个web.config,它应该包含在IIS下运行所需的所有内容。对于一个基本的设置,这应该是所有你需要的。生成的web.config应该负责让你的应用程序运行

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

<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>



  • 我的问题可能是因为虚拟目录,因为它可以直接正常运行