如何修复错误“ANCM In-Process Handler Load Failure”?
Posted
技术标签:
【中文标题】如何修复错误“ANCM In-Process Handler Load Failure”?【英文标题】:How to fix error "ANCM In-Process Handler Load Failure"? 【发布时间】:2019-09-20 05:34:54 【问题描述】:我正在 Windows Server 2016 Standard 上的 IIS 中设置第一个站点。
这是一个NET Core 2.2
应用程序。我无法让网站显示。
我收到此错误:
HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
我可以更改什么来清除此错误并显示我的网站?
我的申请是dll
。
我通过命令提示符在服务器上测试了我的应用程序
dotnet ./MyApp.dll
它显示在浏览器中,但仅在服务器本身上显示 (localhost:5001/
)。
使用此方法无法从任何其他服务器访问该站点。 当我通过 IIS 设置站点时,我在服务器和试图访问该站点的服务器上都收到 In-Process 错误。
起初我收到 Out-Process 错误。我读到的东西说要将此 (hostingModel="inprocess") 添加到我的web.config
所以我做了,但现在我收到了 In-Process 错误。
该网站在我的开发服务器上安装后运行良好。
事件查看器显示“IIS AspNetCore Module V2”的此错误:
无法启动应用程序“/LM/W3SVC/2/ROOT”,错误代码“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>
【问题讨论】:
您能否运行报告并编辑您的问题以包含信息? docs.jexusmanager.com/tutorials/ancm-diagnostics.html 您能否为您尝试运行的 web/api 项目发布完整的 web.config 文件? [Azure]:HTTP 错误 500.0 – ANCM 进程内处理程序加载失败devsdaily.com/… Using .netcore 2.2 and using the `In Process` Hosting Model的可能重复 从您的解决方案中删除或注释最后修改的代码并运行应用程序。之后它工作正常。干杯。 【参考方案1】:就我而言,在更新到 .Net 6 并使用自包含应用程序后,我开始看到此错误。
我可以手动将模块设置为 AspNetCoreModule
,应用程序将在 IIS 中运行,但我知道这只是一种解决方法,因为 AspNetCoreModuleV2
应该与 .Net 6 应用程序一起使用
我在ConfigureServices
方法中有以下行:
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
删除兼容版本解决了我的问题。
services.AddMvc();
【讨论】:
【参考方案2】:以前没有对我有用的答案。在我的情况下,“aspNetCore”标签内的“processPath”指向一个不存在的文件夹。一位同事告诉我,当 web.config 中的任何值错误时,应用程序不会启动并出现这个奇怪的错误。
【讨论】:
【参考方案3】:修复所有项目构建错误,只需修复此问题,应用程序就会加载。
【讨论】:
【参考方案4】:我尝试将 aspnetCoreModuleV2 更改为 aspnetCoreModuleV2,效果很好,但每次在 Visual Studio 中发布时都需要更改。 经过测试,我发现我可以将 IIS 的应用程序池默认设置更改为一般启用 32 位应用程序。
但是我没有在32位电脑上测试过,应该可以的。
见Screenshot。
【讨论】:
【参考方案5】:就我而言,我将 app_name.exe 从我的备份文件夹放回 bin\debug,然后它就成功了。
如果您没有包含 exe 的备份文件夹,请不要担心发布您的网络应用程序/网络 API 并从那里复制
【讨论】:
【参考方案6】:对我来说,这是由用于开发和部署的不同 web.config 文件引起的:
development: <aspNetCore requestTimeout="23:00:00" processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" forwardWindowsAuthToken="false" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" startupTimeLimit="3600" hostingModel="InProcess">
deployment : <aspNetCore requestTimeout="23:00:00" processPath=".\Nop.Web.exe" arguments="" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" startupTimeLimit="3600" hostingModel="InProcess">
【讨论】:
【参考方案7】:当我尝试以 List<>
格式从 ViewModel 获取数据并且我的数据以 IEnumerable
格式出现时,我收到了该错误。
在你们更新你的 vs2019 或删除一些文件之前,你最好检查一下那个选项。
【讨论】:
【参考方案8】:我今天遇到了同样的问题,在服务器上安装以下软件包对我来说解决了这个问题。如果您已经在服务器上安装了任何以前版本的 Windows Hosting Bundle,则无需重新启动服务器即可安装新版本。
ASP.NET Core 3.1 Runtime (v3.1.11) - Windows Hosting Bundle
【讨论】:
【参考方案9】:当我将 IIS Express 中的表单调试切换到 IIS 时,这发生在我身上。我检查了事件查看器 > 应用程序日志,发现有以下错误:
Executable was not found at '...\bin\Debug\netcoreapp3.1\%LAUNCHER_PATH%.exe'
然后我在下面的thread找到了解决方案。
我基本上需要用应用程序的硬编码名称替换 web.config 条目:
<aspNetCore processPath="dotnet" arguments=".\ProjectName.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
【讨论】:
【参考方案10】:我在 .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 和其他更高版本。
【讨论】:
谢谢@Arif,遇到了同样的问题,这个解决方案非常有效。这个答案应该被认为是一个公认的答案。无论如何 +1 评分。 注意:在上面的“更多详细信息”链接中,有一个关于如何设置回进程外的回复。这是模糊的,可能不是所希望的。 github.com/dotnet/aspnetcore/issues/6111#issuecomment-451294361 任何想法什么是 AspNetCoreModuleV2 vs AspNetCoreModule? 但是每当我发布它时都会出现一个问题,每次都会更改 web webconfig 文件。 我刚刚从微软那里得到了最新的信息,这仍然是一个问题。此解决方案解决了该问题。【参考方案11】:我相信 IISExpress 在此过程中搞砸了。
尝试以下方法:
VS 的“清洁解决方案” 转到解决方案文件夹并从那里删除 .vs 文件夹。 构建并运行。
【讨论】:
【参考方案12】:如果其他人无法找到解决方案,这是我的方案: 我最近使用 .NET 5 开始了一个新项目,一切正常。然后我从 Preview 5 升级到了 7,突然之间我的 IIS Express 不再工作了。我的解决方法是简单地修复 Visual Studio:
.
【讨论】:
【参考方案13】:我也收到了"HTTP Error 500.0 - ANCM In-Process Handler Load Failure"
除了我的情况...在我收到 Blue Screen of Death.
之前一切都运行良好
我有两个启动项目的解决方案。 一个是 API(出现),另一个是 WebApp(出现错误)。 Both are .NET Core 3.1
..也是VS2019。
首先我尝试在 program.cs 的 Main() 中设置断点...它从来没有走到这一步。
public static void Main(string[] args)
CreateHostBuilder(args).Build().Run();
预感...我查看了已安装的 NuGet 包。 我卸载并(重新)安装了
Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation(3.1.6)
...现在它又开始工作了。
【讨论】:
有同样的事情(蓝屏)只需要清理解决方案并重建【参考方案14】:删除 Web 配置中的“托管模型 ="in process"”部分。
例子:
<aspNetCore processPath="dotnet" arguments=".\WebAPICore.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
到
<aspNetCore processPath="dotnet" arguments=".\WebAPICore.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
【讨论】:
【参考方案15】:在我的情况下,只需将 MVC 添加到 Startup.cs 请按照图片进行操作。我正在尝试添加依赖注入然后显示此问题。我认为这会有所帮助。 关注这张图片:https://i.stack.imgur.com/ykw8P.png
【讨论】:
为什么要使用图片?直接显示代码,而不是让人们点击链接。【参考方案16】:我有同样的错误。
根据微软 (https://dotnet.microsoft.com/download/dotnet-core/current/runtime) 的说法,我们应该在我们的托管服务器中安装“ASP.NET Core Hosting Bundle”。
'ASP.NET Core 托管包包括 .NET Core 运行时和 ASP.NET Core 运行时。如果安装在带有 IIS 的机器上,它还会添加 ASP.NET Core IIS 模块'
完成后,我的服务器上安装了“AspNetCoreModuleV2”,一切正常。它不需要更改您的 'web.config' 文件。
【讨论】:
【参考方案17】:对我来说,这是因为我在我的应用程序中定义了 2 次 ASPNETCORE_ENVIRONMENT 环境变量 - 一个在 web.config 中,另一个在 applicationhost.config 中
【讨论】:
【参考方案18】:有时这是因为多个应用程序可能使用同一个应用程序池
在这种情况下,第一个应用程序将起作用,而其他应用程序将不起作用
解决方案是为每个应用程序创建新的应用程序池。
【讨论】:
你发现了真正的问题。 是的,这就是问题所在。 @Arif 上面的答案似乎确实解决了这个问题,但可以掩盖实际问题,即多个 Web 应用程序使用同一个应用程序池。 可能是巧合,但这只是在我从 .net core 2.1 升级到 .net core 3.1 之后才发生的。在此之前,我可以在同一个应用程序池中托管多个应用程序【参考方案19】:我在 Asp.Net Core Fails To Load 修复了这个问题 - 您需要指定程序使用进程内或进程外模型。
我将我的 CreateWebHostBuilder 更改为:
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
var builder = WebHost.CreateDefaultBuilder(args);
if (env == EnvironmentName.Staging || env == EnvironmentName.Production)
builder.UseIIS();
builder.UseStartup<Startup>();
return builder;
附言。我在我的 .pubxml 部署配置文件中设置了ASPNETCORE_ENVIRONMENT
,方法是添加:
<PropertyGroup>
<EnvironmentName>Staging</EnvironmentName>
</PropertyGroup>
【讨论】:
【参考方案20】:将平台目标更改为任何 CPU。
【讨论】:
【参考方案21】:有关详细信息,请在 web.config 中设置
stdoutLogEnabled="true"
然后检查日志文件夹。就我而言,它与项目、发布或托管设置无关——我没有复制对我的应用程序至关重要的文件是我的错。错误只是“找不到文件”D:\Development\IIS Hosting Test\filename.ext”
【讨论】:
简单而真实:)。 web api 根目录下的日志文件夹 - 看到这个 - ***.com/questions/40536073/… "你必须确保日志文件夹存在!IIS 不会为你创建。这样一个简单的解决方案令人愤怒的问题。”【参考方案22】:打开 .csproj 文件并在 Project > PropertyGroup > AspNetCoreHostingModel 下,将值“InProcess”更改为“OutOfProcess”。
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
【讨论】:
当我从 2.2 Core 切换到 3.1 Core 时,它工作正常 在 .NET 5 上为我工作。AspNetCoreHostingModel
未设置,默认为 InProcess。【参考方案23】:
如果您尝试使用 IIS url 访问该站点,但 Visual Studio 已设置为使用 IISExpress,您可以获得此信息
另请参阅 ASP.Net Core 1.0 RC2 : What are LAUNCHER_PATH and LAUNCHER_ARGS mentioned in web.config?
长话短说,当您在 IIS 和 IISExpress 之间切换时,Visual Studio 会更改 web.config。如果在设置为使用 IISExpress 时使用 IIS url,那么 aspNetCore processPath 将是错误的
另外,复制 web.config 文件的情况并不少见。如果您不更改 processPath,您可能会收到相同的错误
【讨论】:
【参考方案24】:在我的情况下,更新 .net core sdk 工作正常。
【讨论】:
【参考方案25】:对于我的特定问题,是 IIS 中的站点权限。
我编辑了“所有人”的权限,它起作用了。我从这个页面得到了信息:https://github.com/aspnet/AspNetCore/issues/6111
【讨论】:
你不应该允许所有人。你试过 IIS_IUSRS 了吗? 感谢您的帮助。我删除了所有人,而是使用 IIS_IUSRS。以上是关于如何修复错误“ANCM In-Process Handler Load Failure”?的主要内容,如果未能解决你的问题,请参考以下文章