IIS和NET Core HTTP错误500.30 - ANCM进程内启动失败,.net core 3.1

4

我使用.NET Core模板创建了一个应用程序,集成了Angular和身份验证功能。.NET Core版本为3.1。 在属性->调试->IIS配置文件中,我将Hosting Model设置为Out of process。但在Web.config文件中,仍然是inprocess。 我从以下链接安装了ASP Core Runtime: https://dotnet.microsoft.com/download/dotnet/current 当我以IIS Express方式运行我的项目时,它可以正常工作。 但是,当我将发布的文件复制到IIS文件夹中时,出现了错误:

HTTP Error 500.30 - ANCM In-Process Start Failure
Common solutions to this issue:
The application failed to start
The application started but then stopped
The application started but threw an exception during startup
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=2028265 

我已经尝试了许多从互联网上找到的分辨率,因为这个错误是众所周知的,但都没有结果。

我的dotnet信息:

C:\tasks\TestApp\WebApplication2\WebApplication2>dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   3.1.300
 Commit:    b2475c1295

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\3.1.300\

Host (useful for support):
  Version: 3.1.4
  Commit:  0c2e69caa6

.NET Core SDKs installed:
  1.1.0 [C:\Program Files\dotnet\sdk]
  2.0.2 [C:\Program Files\dotnet\sdk]
  2.1.4 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.507 [C:\Program Files\dotnet\sdk]
  2.1.508 [C:\Program Files\dotnet\sdk]
  2.2.103 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.300 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 1.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

我已将InProcess改为OutOfProcess,现在我的配置看起来像这样:
<system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\WebApplication2.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" />
  </system.webServer>

我遇到了错误:

An error occurred while starting the application.

有很多常见原因会导致类似的问题,但你应该按照错误信息所说的去查看 https://go.microsoft.com/fwlink/?LinkID=2028265。我编写了一些诊断工具,https://docs.jexusmanager.com/tutorials/ancm-diagnostics.html#background - Lex Li
抱歉,不过你能告诉我如何打开网站吗?对于在 Jexus 管理器中打开的网站,有一个名为 ASP.NET Core 诊断的操作。 - Robert
要检查IIS站点,您可以按照https://docs.jexusmanager.com/getting-started/iis.html的步骤进行操作。 - Lex Li
看看我的问题 https://stackoverflow.com/questions/61441307/asp-net-core-3-1-inprocess-on-azure-app-service-http-error-500-31-ancm-faile,也许会有所帮助。 - Vova Bilyachat
@VolodymyrBilyachat:我已经改成了\?%home%\LogFiles\stdout,但没有帮助。 - Robert
显示剩余2条评论
3个回答

9

enter image description here

您只需编辑 ASP.NET Core 应用程序文件夹中的 web.config。默认情况下,它在 wwwroot 文件夹中。

AspNetCoreHostingModelhostingModel 的值更改为 OutOfProcess

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
  <location path="." inheritInChildApplications="false"> 
    <system.webServer>
      <handlers> 
        <add name="aspNetCore" path="" verb="" modules="AspNetCoreModule" resourceType="Unspecified" /> 
      </handlers> 
      <aspNetCore processPath=".\fad.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="OutOfProcess" /> 
    </system.webServer> 
  </location> 
</configuration> 
<!--ProjectGuid: 4904ffb5-a4a6-4e5a-bc46-51d1171d82b0-->

为什么这个有效?在一个设备上我使用了“inprogress”,应用程序可以正常运行,但在另一个用户上,我不得不将其更改为“OutOfProcess”才能使其工作... - NiceToMytyuk

6

经过整整一天的努力,我找到了一个很好的解决方案,请按照以下步骤进行:

  1. 通过cmd进入您的项目文件夹。
  2. 输入dotnet publish --e/:output (注意这将发布代码到e驱动器的output文件夹中)
  3. 通过cmd进入output文件夹。
  4. 输入dotnet <project-name.dll>(这将在localhost:5003中运行应用程序)
  5. 如果出现任何问题,这将显示在cmd中。我曾遇到一个问题,其中一个文件夹丢失了。添加了该文件夹后,问题得到解决。

0

你有没有注意到你的发布配置文件显示为enter image description here

所以请进入你项目的根目录,用记事本打开.csproj文件。

然后修改<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

改为

<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

并重新发布。

或者您可以尝试修改发布配置文件,从 <MSDeployPublishMethod>InProcess</MSDeployPublishMethod><MSDeployPublishMethod>OutofProcess</MSDeployPublishMethod> 然后在 IIS web.config 中从您的 asp.net core 处理程序中修改 hostingModel="inprocess"hostingModel="OutOfProcess"


我已将InProcess更改为OutOfProcess,详细说明请参见我的帖子。 - Robert
@Robert 清理根目录,然后编辑 csproj 并重新发布应用程序怎么样? - Jokies Ding
@Robert 请记得在部署后回收应用程序。 - Jokies Ding
我尝试了,但结果还是一样的。 - Robert
@Robert,日志应该显示在.\logs\而不是?%home%\LogFiles\stdout中。您手动创建了日志文件夹并重现了此问题吗?此外,您是否尝试将应用程序池标识设置为本地系统? - Jokies Ding

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接