如何修复错误 "ANCM In-Process Handler Load Failure"?

How to fix error "ANCM In-Process Handler Load Failure"?

我正在 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 设置网站时,我在服务器上和尝试访问该网站的服务器上都收到了进程中错误。

起初我收到了外处理错误。我读到的东西说要将此 (hostingModel="inprocess") 添加到我的 web.config 所以我做了,但现在我收到了进程中错误。

该站点安装在我的开发服务器上时工作正常。

事件查看器显示“IIS AspNetCore 模块 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>

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

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

在我的例子中,更新 .net core 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等以上版本同样适用

我在此处修复了此问题 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;
}

PS。我通过添加以下内容在我的 .pubxml 部署配置文件中设置 ASPNETCORE_ENVIRONMENT

<PropertyGroup>
    <EnvironmentName>Staging</EnvironmentName>
</PropertyGroup>

如果您尝试使用 IIS url 访问该站点,但 Visual Studio 设置为使用 IISExpress

,则您可以获得此信息

另请参阅

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

此外,复制 web.config 文件也很常见。如果您不更改 processPath

,您可能会遇到同样的错误

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

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

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

stdoutLogEnabled="true"

然后检查日志文件夹。就我而言,它与项目、发布或托管设置无关——我没有复制对我的应用程序必不可少的文件是我的错。错误只是 "Could not find file "D:\Development\IIS Hosting Test\filename.ext"

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

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

在这种情况下,第一个应用程序可以运行,其他应用程序将无法运行

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

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

我有同样的错误。

根据 Microsoft(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 核心 IIS 模块'

在我这样做之后,“AspNetCoreModuleV2”安装在我的服务器上并且一切正常。它不需要更改您的“web.config”文件。

在我的例子中,只是将 MVC 添加到 Startup.cs 请按照图片进行操作。我正在尝试添加依赖注入然后显示此问题。我认为这会有所帮助。 关注这张图片:https://i.stack.imgur.com/ykw8P.png

删除网络配置中的 'hosting Model ="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.

之前,一切都 运行 很棒

我有两个启动项目的解决方案。
一个是 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)

...现在又开始工作了。

如果其他人找不到解决方案,这是我的情况:
我最近开始了一个使用 .NET 5 的新项目,一切正常。然后我从预览版 5 升级到预览版 7,突然间我的 IIS Express 不再工作了。我的解决方法是简单地修复 Visual Studio:

.

我相信 IISExpress 在这个过程中搞砸了。

尝试以下操作:

'Clean Solution' 来自 VS
进入解决方案文件夹并从那里删除 .vs 文件夹。
构建并 运行.

当我将 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"/>

我今天遇到了同样的问题,在服务器上安装以下软件包解决了我的问题。如果您已经在服务器上安装了任何先前版本的 Windows 托管捆绑包,则无需重新启动服务器即可安装新版本。

ASP.NET Core 3.1 Runtime (v3.1.11) - Windows Hosting Bundle

当我尝试从 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 的备份文件夹,那么不要担心发布您的网络应用程序/网络 API 并从那里复制

我试过将aspnetCoreModuleV2改成aspnetCoreModuleV2,效果不错,但是每次在Visual Studio发布的时候改都很麻烦。 经过测试,我发现我可以更改 IIS 的应用程序池默认设置,以启用一般的 32 位应用程序。

不过我没有在32位电脑上测试过,应该可以的。

见Screenshot。

修复所有项目构建错误,只需修复此问题即可加载应用程序。

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

就我而言,在更新到 .Net 6 并使用自包含应用程序后,我开始看到此错误。

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

我在 ConfigureServices 方法中有以下行:

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

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

services.AddMvc();