在 Azure 上部署的 .Net Core 3.1 Web 应用程序显示错误 HTTP 错误 500.35 - 同一进程中的 ANCM 多个进程内应用程序

Deployed .Net Core 3.1 Web app on Azure shows error HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process

我已经将 Web 应用程序部署到我们的 Azure,使用最新的 .net 核心 3.1 堆栈,该应用程序在同一个 Web 应用程序部署下分为 3 个虚拟应用程序 运行,这似乎是导致问题,因为我可以访问位于根 http://mywebapp/index.html but when I attempt to access any of the virtual paths IE: http://mywebapp/virtualapp/index.html 上的主应用程序,显示以下错误:

HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process Common solutions to this issue:

Select a different application pool to create another in-process application. Specific error detected by ANCM: Only one in-process application is allowed per IIS application pool. Please assign the application '/LM/W3SVC/1848604257/ROOT/business' to a different IIS application pool. Troubleshooting steps: Check the system event log for error messages Enable logging the application process' stdout messages Attach a debugger to the application process and inspect For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028526

查看 Microsoft 引用的页面,针对此错误显示的信息是:

500.35 ANCM Multiple In-Process Applications in same Process The worker process can't run multiple in-process apps in the same process.

To fix this error, run apps in separate IIS application pools.

所以我的问题是,在 .Net Core 3.1 下,是否有办法在 Azure 中处理部署到虚拟路径中的多个 Web 应用程序?或者这是 .Net Core 3.1 的限制,应用程序应该部署到单独的 Web 应用程序中?

谢谢

我最后向微软询问了这个错误以及如何在 Azure 平台上解决这个问题,他们指出解决方案是更改您的 Web 应用程序以及从 "InProcess" 托管部署的任何其他虚拟应用程序模型到 "OutOfProcess",你可以找到更多关于这意味着什么的信息 here 但要实现这一点,你需要向每个项目文件 (.csproj) 添加以下值:

<PropertyGroup>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

在 Azure 上部署后,通过验证您的 web.config 是否具有以下设置来验证更改是否已发生:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet"
                  arguments=".\MyApp.dll"
                  stdoutLogEnabled="false"
                  stdoutLogFile=".\logs\stdout"
                  hostingModel="OutOfProcess" />
    </system.webServer>
  </location>
</configuration>