如何修复错误 "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 托管捆绑包,则无需重新启动服务器即可安装新版本。
当我尝试从 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();
我正在 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 托管捆绑包,则无需重新启动服务器即可安装新版本。
当我尝试从 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();