尝试在 Plesk Onyx 17.8.11 上托管 ASP.NET 2.2 网站时出错 - HTTP 错误 500.0 - ANCM 进程内处理程序加载失败
Posted
技术标签:
【中文标题】尝试在 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 【发布时间】:2019-09-07 21:53:52 【问题描述】:我正在尝试在 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 核心库,他们说他们已经“安装了 .NET core 2.1.10 和 2.2.2 托管包”,但我仍然遇到同样的错误。
主机上的 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 -->
对***家族有什么建议吗?
【问题讨论】:
同样的问题。 阅读此文档windowswebhostingreview.com/…。 【参考方案1】:这个错误是documented,连同解决方法:
500.0 进程内处理程序加载失败
工作进程失败。应用无法启动。
ASP.NET Core 模块无法找到 .NET Core CLR 并找不到进程内请求处理程序 (aspnetcorev2_inprocess.dll)。检查:
应用以Microsoft.AspNetCore.Server.IIS NuGet 包或Microsoft.AspNetCore.App metapackage 为目标。 应用所针对的 ASP.NET Core 共享框架的版本安装在目标计算机上。
最可能的情况是您根本没有安装 .NET Core 运行时,或者至少没有安装正确的版本以匹配您的项目目标。
【讨论】:
感谢您的洞察力,但是,我不确定您是否具体阅读了该问题,“我正在尝试在 interserver.com 共享托管平台上托管 ASP.NET 2.2 网站”。我无法直接访问服务器来安装任何 .net 核心运行时。 那你可能不走运了。除非共享托管服务提供商已安装运行时并使其保持最新状态,否则您无法在该处托管。老实说,只要找一个真正的主人。共享主机是一个骗局。您可以在某些地方以 5 美元/月的价格获得完整的 VPS。 5 美元/月对于完整的 VPS 来说听起来很划算……你有什么推荐的? 我使用 DigitalOcean。这是他们最小的 VPS 之一,但对于我的博客和其他一些个人项目来说已经足够了。 @Easton James Harvey 我也收到了与您在我的托管服务提供商 (asphostportal.com) 上遇到的相同的错误消息。只要确保您要求您的提供商更改为无托管代码,它就会起作用。【参考方案2】:由于这是一个共享托管平台,我无权摆弄服务器配置。据我所知,ASP.NET Core 2.2.4 运行时安装出了点问题,AspNetCoreModuleV2.dll 丢失/损坏/错位?
在这方面花了很多时间后,我找到了一些解决方法:
-
每次发布时,请转到发布代码的主机上的文件夹,打开自动生成的 web.config,在处理程序节点下将“AspNetCoreModuleV2”替换为“AspNetCoreModule”。这可以通过默认返回到以前的包来实现,但是很糟糕,因为每次发布代码时都必须手动完成。
或,
-
在 Visual Studio 解决方案中,在“属性”>“发布配置文件”下打开(或创建新的)发布配置文件。在 PropertyGroup 添加:
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
。这行得通,但这是一个很大的 hack,应用程序不会获得 InProcess(默认)的所有性能提升
经过测试,我发现你可以使用其中之一,你不必同时使用。
我希望随着托管服务继续更新其运行时,这个问题会随着时间的推移自行解决,但现在希望这些变通办法也能对您有所帮助。
【讨论】:
【参考方案3】:适用于 Asp.Net Core 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>
【讨论】:
根据@EastonJamesHarvey 的回答制作。这必须执行一次。【参考方案4】:我在使用 Interserver.com 时遇到了同样的问题。
支持通过将我的应用程序池切换到 64 位来解决问题。从我读到的关于其他 Plesk 托管服务提供商的信息来看,默认情况下,创建虚拟机的脚本会默认创建 32 位应用程序池。我猜 AspNetCoreModuleV2 需要 64 位,但这只是一个猜测。很高兴我的网站现在正在运行中。
【讨论】:
以上是关于尝试在 Plesk Onyx 17.8.11 上托管 ASP.NET 2.2 网站时出错 - HTTP 错误 500.0 - ANCM 进程内处理程序加载失败的主要内容,如果未能解决你的问题,请参考以下文章
Django + Plesk + Apache - 在某些 url 上禁止 403 但 404 的显示应用程序正在运行...?