【问题标题】:How to fix error "ANCM In-Process Handler Load Failure"?如何修复错误“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>

【问题讨论】:

标签: iis asp.net-core asp.net-core-2.2


【解决方案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&lt;&gt; 格式从 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 根目录下的日志文件夹 - 看到这个 - stackoverflow.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。
                                      猜你喜欢
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2011-01-05
                                      • 2021-01-29
                                      • 1970-01-01
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多