尝试在 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 添加:&lt;AspNetCoreHostingModel&gt;OutOfProcess&lt;/AspNetCoreHostingModel&gt;。这行得通,但这是一个很大的 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 进程内处理程序加载失败的主要内容,如果未能解决你的问题,请参考以下文章

Onyx 下载:分布式计算系统

Onyx 0.9.10-beta4 发布,分布式计算系统

Django + Plesk + Apache - 在某些 url 上禁止 403 但 404 的显示应用程序正在运行...?

产品专栏Adrian Cruz | Crystal Resin&Onyx“元素”照明系列

在PLESK计划任务上取消定义函数get_field()

使用非 www 域安装 Plesk WordPress 多站点