尝试在 Plesk Onyx 17.8.11 上托管 ASP.NET 2.2 网站时出错 - HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
Error trying to host an ASP.NET 2.2 Website on Plesk Onyx 17.8.11 - HTTP Error 500.0 - ANCM In-Process Handler Load Failure
我正在尝试在 interserver.com 共享托管平台 上托管 ASP.NET 2.2 网站。他们使用 Plesk Onyx 版本 17.8.11 作为他们的托管平台控制面板。
我已验证主机已正确路由和设置,但仍然出现运行时错误:
HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
- 未找到 Microsoft.NetCore.App 或 Microsoft.AspNetCore.App 的指定版本
- 进程中的请求处理程序 Microsoft.AspNetCore.Server.IIS 未在应用程序中引用
- ANCM 找不到 dotnet。
我向客户服务报告了这个问题,他们给我发了一些尝试的文章,但没有找到解决方案。由于错误表明找不到关键的 aspnet 核心库,他们说他们有 "installed .NET core 2.1.10 and 2.2.2 hosting bundle" 但我仍然遇到同样的错误。
主机上的web.config(自动生成)是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\BridgeSite.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 7bcb9c33-cd6b-4078-9742-869d5dd7bxxx -->
Whosebug 系列有什么建议吗?
这个错误是documented,连同解决方法:
500.0 In-Process Handler Load Failure
The worker process fails. The app doesn't start.
The ASP.NET Core Module fails to find the .NET Core CLR and find the in-process request handler (aspnetcorev2_inprocess.dll). Check that:
- The app targets either the Microsoft.AspNetCore.Server.IIS NuGet package or the Microsoft.AspNetCore.App metapackage.
- The version of the ASP.NET Core shared framework that the app targets is installed on the target machine.
最有可能的情况是您根本没有安装 .NET Core 运行时,或者至少没有安装正确的版本以匹配您的项目目标。
由于这是一个共享托管平台,我无法访问 fiddle 周围的服务器配置。据我所知,ASP.NET Core 2.2.4 运行时安装出现问题,AspNetCoreModuleV2.dll 是 missing/corrupt/misplaced?
在这上面花了很多时间后,我发现了一些解决方法:
- 每次发布时,转到发布代码的主机上的文件夹,打开自动生成的 web.config,在 handlers 节点下将 "AspNetCoreModuleV2" 替换为 "AspNetCoreModule" .通过默认将其返回到以前的包,这是可行的,但是很糟糕,因为每次发布代码时都必须手动完成。
或,
- 在 Visual Studio 解决方案中,在属性 > PublishProfiles 下打开(或创建新的)发布配置文件。在 PropertyGroup 中添加:
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
。这可行,但是是一个很大的 hack,应用程序将不会获得 InProcess(默认) 的所有性能提升
经过测试,我发现你可以使用一个或另一个,你不必同时使用。
我希望随着托管服务继续更新其运行时,这个问题会随着时间的推移自行解决,但现在希望这些解决方法也能帮助您。
对于 Asp.Net 核心 2.2 MVC。
1. 在项目的根目录下创建 web.config。
2. 过去这个配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="InProcess" />
</system.webServer>
</location>
</configuration>
我遇到了与 Interserver.com 相同的问题。
支持人员通过将我的应用程序池切换到 64 位来解决问题。从我读到的关于其他 Plesk 托管提供商的内容来看,默认情况下创建虚拟机的脚本默认创建 32 位应用程序池。我猜测 AspNetCoreModuleV2 需要 64 位,但这只是一个猜测。很高兴我的网站 运行 正在处理中。
我正在尝试在 interserver.com 共享托管平台 上托管 ASP.NET 2.2 网站。他们使用 Plesk Onyx 版本 17.8.11 作为他们的托管平台控制面板。
我已验证主机已正确路由和设置,但仍然出现运行时错误:
HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
- 未找到 Microsoft.NetCore.App 或 Microsoft.AspNetCore.App 的指定版本
- 进程中的请求处理程序 Microsoft.AspNetCore.Server.IIS 未在应用程序中引用
- ANCM 找不到 dotnet。
主机上的web.config(自动生成)是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\BridgeSite.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
</system.webServer>
</location>
</configuration>
<!--ProjectGuid: 7bcb9c33-cd6b-4078-9742-869d5dd7bxxx -->
Whosebug 系列有什么建议吗?
这个错误是documented,连同解决方法:
500.0 In-Process Handler Load Failure
The worker process fails. The app doesn't start.
The ASP.NET Core Module fails to find the .NET Core CLR and find the in-process request handler (aspnetcorev2_inprocess.dll). Check that:
- The app targets either the Microsoft.AspNetCore.Server.IIS NuGet package or the Microsoft.AspNetCore.App metapackage.
- The version of the ASP.NET Core shared framework that the app targets is installed on the target machine.
最有可能的情况是您根本没有安装 .NET Core 运行时,或者至少没有安装正确的版本以匹配您的项目目标。
由于这是一个共享托管平台,我无法访问 fiddle 周围的服务器配置。据我所知,ASP.NET Core 2.2.4 运行时安装出现问题,AspNetCoreModuleV2.dll 是 missing/corrupt/misplaced?
在这上面花了很多时间后,我发现了一些解决方法:
- 每次发布时,转到发布代码的主机上的文件夹,打开自动生成的 web.config,在 handlers 节点下将 "AspNetCoreModuleV2" 替换为 "AspNetCoreModule" .通过默认将其返回到以前的包,这是可行的,但是很糟糕,因为每次发布代码时都必须手动完成。
或,
- 在 Visual Studio 解决方案中,在属性 > PublishProfiles 下打开(或创建新的)发布配置文件。在 PropertyGroup 中添加:
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
。这可行,但是是一个很大的 hack,应用程序将不会获得 InProcess(默认) 的所有性能提升
经过测试,我发现你可以使用一个或另一个,你不必同时使用。
我希望随着托管服务继续更新其运行时,这个问题会随着时间的推移自行解决,但现在希望这些解决方法也能帮助您。
对于 Asp.Net 核心 2.2 MVC。 1. 在项目的根目录下创建 web.config。 2. 过去这个配置:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet"
arguments=".\MyApp.dll"
stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout"
hostingModel="InProcess" />
</system.webServer>
</location>
</configuration>
我遇到了与 Interserver.com 相同的问题。
支持人员通过将我的应用程序池切换到 64 位来解决问题。从我读到的关于其他 Plesk 托管提供商的内容来看,默认情况下创建虚拟机的脚本默认创建 32 位应用程序池。我猜测 AspNetCoreModuleV2 需要 64 位,但这只是一个猜测。很高兴我的网站 运行 正在处理中。