如何修复“ ANCM 进程内处理程序加载失败”错误?

我正在 WindowsServer2016Standard 上设置 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”失败,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>
118346 次浏览

对于我的特殊问题是 IIS 中的站点权限。

我编辑了“每个人”的权限,它起作用了。我从这个页面得到了信息: https://github.com/aspnet/AspNetCore/issues/6111

在我的例子中,更新.net 核心 sdk 工作得很好。

我在.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和其他更高版本。

我在这里修正了这个 内核加载失败-你需要指定程序使用一个进程内或进程外的模型。

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

如果您尝试使用 IISurl 访问站点,但 VisualStudio 被设置为使用 IISExpress,则可以获得此结果

参见 Net Core 1.0 RC2: web.config 中提到的 LAUNCHER _ PATH 和 LAUNCHER _ ARGS 是什么?

长话短说,当您在 IIS 和 IISExpress 之间切换时,Visual Studio 会更改 web.config。如果在设置为使用 IISExpress 时使用 IIS URL,则 aspNetCore processPath 将是错误的

另外,复制 web.config 文件并不少见,如果不更改 processPath,也可能会出现同样的错误

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

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

有关更多信息,请在 web.config 中设置

stdoutLogEnabled="true"

然后检查日志文件夹。在我的情况下,它与项目,发布或托管设置无关-这是我的错,没有复制一个文件必不可少的应用程序。错误只是“无法找到文件”D: Development IIS Hosted Test filename.ext

将平台目标更改为任意 CPU。

Change platform target to Any CPU

有时这是因为 多个应用程序可能使用相同的 申请池

在这种情况下,第一个应用程序将工作,其他将不工作

解决方案是为每个应用程序创建新的应用程序池。

对我来说,这是因为我的应用程序中定义了两次 ASPNETCORE _ ENVIRONMENT 环境变量,一次在 web.config 中,另一次在 applicationhost.config 中

我也犯了同样的错误。

根据微软(https://dotnet.microsoft.com/download/dotnet-core/current/runtime) ,我们应该在我们的主机服务器上安装“ < em > ASP.NET 核心主机包 ”。

NET 核心托管包包括。NET 核心运行时和 ASP.NET 核心运行时。如果安装在具有 IIS 的机器上,它还将添加 ASP.NET 核心 IIS 模块

在我这样做之后,’< em > AspNetCoreModuleV2 ’安装在我的服务器和一切工作正常。它不需要改变你的“ < em > web.config ”文件。

在我的情况下,只是添加 MVC 到 Startup.cs 请按照图像。我试图添加依赖注入,然后显示这个问题。我觉得会有帮助的。 关注这个图片: < a href = “ https://i.stack.imgur.com/ykw8P.png”rel = “ nofollow norefrer”> https://i.stack.imgur.com/ykw8p.png

删除 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" />

还有 "HTTP Error 500.0 - ANCM In-Process Handler Load Failure"

除了我的情况... 一切运行良好,直到我得到了 Blue Screen of Death.

I have a solution with two startup projects.
One is an API (that comes up) and the other is a WebApp(which gets the error). Both are .NET Core 3.1..also VS2019.

首先,我尝试在 Program.cs 的 Main ()中设置一个断点... 它从来没有做到这一步。

 public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}

直觉告诉我,我看了 NuGet 安装的软件包。 我卸载和(重新)安装

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation(3.1.6)

现在又能用了。

如果其他人无法找到解决这个问题的办法,那就是我的设想:
我最近开始了一个新项目。NET 5,一切正常。然后,我从预览5升级到7,突然我的 IIS 快递不再工作。对我来说,解决方法就是简单地修复 Visual Studio:

VS 2019 Repair.

我相信 IISExpress 一路上都搞砸了。

试试以下方法:

来自 VS 的“清洁解决方案”
找到解决方案文件夹并从中删除.vs 文件夹。
构建并运行。

当我将 IISExpress 中的调试切换到 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"/>

我今天面临着同样的问题,在服务器上安装以下软件包对我来说已经解决了这个问题。如果服务器上已经安装了任何以前版本的 Windows 主机包,则可以在不重新启动服务器的情况下安装新的主机包。

NET Core 3.1运行时(v3.1.11)-Windows 托管包

当我试图从 ViewModel 获取数据作为 List<>并且我的数据是 IEnumerable格式时,我得到了这个错误。 在你们更新你们的 vs2019或者删除一些文件之前,你们最好检查一下这个选项。

对我来说,这是由开发和部署的不同 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">

在我的例子中,我将 app _ name.exe 从备份文件夹放回 bin debug,然后它就工作了。

如果你没有一个包含 exe 的备份文件夹,所以不要担心发布你的 web 应用程序/web API 并从那里复制

我尝试将 aspnetCoreModuleV2改为 aspnetCoreModuleV2,这个方法很有效,但是每次我在 Visual Studio 中发布它时都很难改变。 测试之后,我发现可以更改应用程序池的默认 IIS 设置,以便通常启用32位应用程序。

但我还没有在32位计算机上测试过,应该没问题。

参见 截图

修复所有项目构建错误,将简单地修复这个问题和应用程序将加载。

之前的答案对我都不起作用。在我的例子中,“ aspNetCore”标签中的“ processPath”指向一个不存在的文件夹。一位同事告诉我,当 web.config 中的任何值出错时,应用程序都不会启动,并出现这种奇怪的错误。

在我的例子中,在更新到.Net 6并使用一个自包含的应用程序后,我开始看到这个错误。

我可以手动将模块设置为 AspNetCoreModule,并且应用程序将在 IIS 中运行,但是我知道这只是一个解决方案,因为应该使用 AspNetCoreModuleV2。净6宗申请

我在 ConfigureServices方法中使用了以下代码行:

services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

删除兼容性版本解决了我的问题。

services.AddMvc();