如何修复“ANCM In-Process Handler Load Failure”的错误?

77
我正在Windows Server 2016 Standard上设置第一个在IIS中的网站。 这是一个NET Core 2.2应用程序。我无法让网站显示。 我遇到了这个错误: HTTP Error 500.0 - ANCM In-Process Handler Load Failure 我应该做出哪些更改来消除这个错误并让我的网站正常显示? 我的应用程序是一个dll。 我通过命令提示符在服务器上测试了我的应用程序。
dotnet ./MyApp.dll

该网站可以在浏览器上显示,但仅限于服务器本身 (localhost:5001/)。

使用此方法,该网站无法从任何其他服务器访问。 当我通过IIS设置网站时,我在服务器和试图访问该网站的服务器上都遇到了In-Process错误。

起初,我收到了Out-Process错误。我读到的一些内容说要将 (hostingModel="inprocess") 添加到我的 web.config,所以我这样做了,但现在我收到了 In-Process 错误。

该网站在我的开发服务器上安装后可以正常运行。

"IIS AspNetCore Module V2" 的事件查看器显示以下错误:

Failed to start application '/LM/W3SVC/2/ROOT', ErrorCode '0x8000ffff'.

这是我的 web.config:

<?xml version="1.0" encoding="utf-8"?>
    <configuration>
  <system.web>
    <customErrors mode="RemoteOnly"></customErrors>
        <identity impersonate="false" password="****" userName="****" />
  </system.web>
  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="false" hostingModel="inprocess" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false">
      <environmentVariables />
    </aspNetCore>
  </system.webServer>
</configuration>

你能否运行一份报告并编辑你的问题以包含这些信息?https://docs.jexusmanager.com/tutorials/ancm-diagnostics.html - Lex Li
你能否完整地发布正在尝试运行的Web/API项目的web.config文件? - Phillip Copley
[Azure]: HTTP错误 500.0 - ANCM进程内处理程序加载失败 https://devsdaily.com/http-error-500-ancm-in-process-handler-load-failure/ - Sunny Sharma
从你的解决方案中删除或注释最近修改的代码,然后运行应用程序。之后它就可以正常工作了。干杯。 - Nirmal JeyaChandra
27个回答

88
我在 .Net Core 2.2 中遇到了同样的问题。当我替换 web.config 后,问题得到了解决。
<handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>

<handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>

然后它就能正常工作。

注意:相同的解决方案也适用于 .Net Core 2.2 和其他更高版本。


5
谢谢@Arif,我遇到了同样的问题,这个解决方案完美地解决了我的问题。这个答案应该被接受。无论如何,我给它一个+1的评分。 - manu
3
你知道 AspNetCoreModuleV2 和 AspNetCoreModule 指的是什么吗? - mko
4
每次我发布时,会出现一个问题,它会更改 webconfig 文件。 - Alamzaib Farooq
2
我刚刚从微软获取了最新的代码,但这个问题仍然存在。这个解决方案可以修复这个问题。 - Kevon
2
这个方法适用于在Windows Server 2008上托管.NET 5应用程序。 - Caio César S. Leonardi
显示剩余8条评论

20

打开.csproj文件,转到Project > PropertyGroup > AspNetCoreHostingModel,将值“InProcess”更改为“OutOfProcess”。

<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

5
当我从2.2核心转换到3.1核心时,它对我来说运行良好。 - Abdul Khaliq
1
在.NET 5上对我有用。 AspNetCoreHostingModel 没有设置并默认为 InProcess。 - Beltway

12
有时这是因为 多个应用程序 可能正在使用相同的 应用程序池
在这种情况下,第一个应用程序将正常工作,而其他应用程序则无法正常工作。
解决方案是为每个应用程序创建新的应用程序池。

3
你抓住了实际的问题。 - Nripendra Ojha
1
是的,这就是问题所在。@Arif上面的答案似乎解决了问题,但可能掩盖了实际问题,即多个 Web 应用程序使用相同的应用程序池。 - takesides
1
可能只是巧合,但这种情况只发生在我从 .net core 2.1 升级到 .net core 3.1 之后。在此之前,我可以在同一个应用程序池中托管多个应用程序。 - Mathias F
1
这个回答和Arif的回答间接地触发了进程重启。在Arif的情况下,改变web.config会在后台触发进程重启,同样的,改变应用程序池也只会触发重启。 - Kalpesh Popat
@MathiasF 这也发生在2.2中。 - codemirror

11

我遇到了同样的错误。

根据微软(https://dotnet.microsoft.com/download/dotnet-core/current/runtime)的说法,我们应该在服务器上安装"ASP.NET Core Hosting Bundle"。

"ASP.NET Core Hosting Bundle包括 .NET Core 运行时和 ASP.NET Core 运行时。如果在安装了IIS的机器上进行安装,则还会添加ASP.NET Core IIS模块"

我安装后,在我的服务器上安装了"AspNetCoreModuleV2",一切都工作正常。不需要更改 "web.config" 文件。


7

想要更多信息,在web.config文件中设置

stdoutLogEnabled="true"

然后检查日志文件夹。在我的情况下,这与项目、发布或托管设置无关 - 这是因为我没有复制对于我的应用程序至关重要的文件而导致的错误。错误简单地说就是“找不到文件"D:\Development\IIS Hosting Test\filename.ext"。”


简单而又真实:)。 - joakimja
根目录下的Web API日志文件夹-请参见此链接-https://dev59.com/vVkR5IYBdhLWcg3w_B_-"您必须确保日志文件夹存在!IIS不会为您创建它。这是解决这个令人恼火问题的一个简单方法。" - Alex Cooper
挽救了我的一天!!! - ulu

2

针对我的问题,是因为IIS中的站点权限不正确。

我将权限编辑为“Everyone”,然后问题得到了解决。我从这个页面获取了信息:https://github.com/aspnet/AspNetCore/issues/6111

最初的回答来自于一个GitHub页面,问题原因是IIS中站点的权限设置不正确,将权限设置为“Everyone”即可解决问题。


4
不应允许每个人。您尝试过使用IIS_IUSRS吗? - Lex Li
感谢您的帮助。我已经删除了“Everyone” 并使用了“IIS_IUSRS”。 - Mark

1

1
我认为IISExpress在某个地方出了问题。
尝试以下操作:
1. 从VS中进行“清理解决方案”; 2. 进入解决方案文件夹并删除其中的.vs文件夹; 3. 编译和运行。

0
这种情况发生在我从IIS Express调试切换到IIS时。我检查了事件查看器>应用程序日志,并在那里找到了以下错误:
Executable was not found at '...\bin\Debug\netcoreapp3.1\%LAUNCHER_PATH%.exe'

然后我在以下线程中找到了解决方案。

我基本上需要用应用程序的硬编码名称替换web.config条目:

<aspNetCore processPath="dotnet" arguments=".\ProjectName.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>

0
它解决了我的问题,因为我的多个应用程序都在使用同一个应用程序池。 我创建了单独的应用程序池,并进行了以下设置:
引用: IIS > 应用程序池 > 添加应用程序池,选择 NoManagedCode(.Net CLR 版本),然后从下拉菜单中选择集成服务。

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