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

时间:2019-05-01 17:05:42

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

我正在Windows Server 2016 Standard上的IIS中设置第一个站点。这是一个Core 2.2应用程序。我无法显示该网站。我收到此错误,“ HTTP错误500.0-ANCM进程内处理程序加载失败”。我可以更改些什么来清除此错误并显示我的网站?

我的应用程序是dll。我通过命令提示符在服务器上使用“ .net。/ MyApp.dll”对我的应用程序进行了测试,该应用程序在浏览器中显示,但仅在服务器本身上显示(localhost:5001 /)。使用此方法无法从任何其他服务器访问该站点。当我通过IIS设置站点时,在服务器上以及尝试访问该站点的服务器上都出现了In-Process错误。起初,我收到进程外错误。我读到的东西说要将此内容添加(hostingModel =“ inprocess”)到我的web.config中,所以我这样做了,但是现在我收到了In-Process错误。我已经研究了3天,但我尝试过的所有方法都无法解决。安装在我的开发服务器上后,该站点可以正常工作。

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

22 个答案:

答案 0 :(得分:12)

.Net core 2.2中存在相同的问题。当我更换

web.config:

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

然后正常工作。更详细的信息是here

答案 1 :(得分:7)

我有同样的错误。

根据Microsoft(https://dotnet.microsoft.com/download/dotnet-core/current/runtime),我们应该在托管服务器中安装“ ASP.NET Core托管捆绑包 ”。

' ASP.NET Core托管捆绑包包括.NET Core运行时和ASP.NET Core运行时。如果安装在装有IIS的计算机上,它还将添加ASP.NET Core IIS模块'

完成后,在服务器上安装了“ AspNetCoreModuleV2 ”,一切正常。不需要更改您的“ web.config ”文件。

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

就我而言,更新.net core sdk可以正常工作。

答案 5 :(得分:0)

就我而言,我将 app_name.exe 从我的备份文件夹放回 bin\debug,然后它就成功了。

如果您没有包含 exe 的备份文件夹,请不要担心发布您的网络应用程序/网络 API 并从那里复制

答案 6 :(得分:0)

对我来说,这是由用于开发和部署的不同 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 :(得分:0)

当我尝试以 false 格式从 ViewModel 获取数据并且我的数据以 List<> 格式获取时出现该错误。 在你们更新你的 vs2019 或删除一些文件之前,你最好检查一下那个选项。

答案 8 :(得分:0)

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

答案 9 :(得分:0)

我相信IISExpress一路搞砸了。

尝试以下操作:

VS的

“清洁解决方案”
转到解决方案文件夹,然后从其中删除.vs文件夹。
构建并运行。

答案 10 :(得分:0)

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

VS 2019 Repair

答案 11 :(得分:0)

我也得到"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)

...现在又可以正常工作了。

答案 12 :(得分:0)

在网络配置中删除“托管模型=“正在处理””部分。

示例:

<aspNetCore processPath="dotnet" arguments=".\WebAPICore.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />

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

答案 13 :(得分:0)

就我而言,只需将MVC添加到Startup.cs中,请进入图像。我试图添加依赖项注入,然后显示此问题。我认为这会有所帮助。 跟随这张图片:https://i.stack.imgur.com/ykw8P.png

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

stdoutLogEnabled="true"

然后检查日志文件夹。以我为例,它与项目,发布或托管设置无关-这是我的错,因为没有复制对我的应用程序至关重要的文件。错误只是“找不到文件“ D:\ Development \ IIS Hosting Test \ filename.ext”

答案 16 :(得分:0)

打开.csproj文件,然后在“项目”>“属性组”>“ AspNetCoreHostingModel”下,将值“ InProcess”更改为“ OutOfProcess”。

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

答案 17 :(得分:0)

如果尝试使用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网址,则aspNetCore processPath将是错误的

此外,复制web.config文件并不罕见。如果不更改processPath

,可能会收到相同的错误

答案 18 :(得分:0)

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

答案 19 :(得分:0)

对于我的特定问题,这是IIS中的网站权限。

我编辑了“所有人”的权限,并且可以使用。我从此页面获得信息:https://github.com/aspnet/AspNetCore/issues/6111

答案 20 :(得分:-1)

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

Change platform target to Any CPU

答案 21 :(得分:-1)

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

不过我没在32位电脑上测试过,应该没问题。

Screenshot