尝试在Plesk Onyx 17.8.11上托管ASP.NET 2.2网站时出错-HTTP错误500.0-ANCM进程内处理程序加载失败

时间:2019-04-17 15:26:56

标签: c# asp.net-core plesk plesk-onyx

我正在尝试在 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。

HTTP Error 500.0 - ANCM In-Process Handler Load Failure 我已将问题报告给客户服务,他们已向我发送了几篇文章供您尝试,但未找到解决方案。由于错误指出无法找到关键的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 -->

有任何建议stackoverflow系列吗?

4 个答案:

答案 0 :(得分:1)

由于这是一个共享的托管平台,因此我无权访问服务器配置。据我所知,ASP.NET Core 2.2.4运行时安装出现了问题,并且AspNetCoreModuleV2.dll丢失/损坏/放错了位置?

在花费很多时间后,我发现了几种解决方法:

  1. 每次发布​​时,转到发布代码的主机上的文件夹,打开自动生成的web.config,在处理程序节点下,将“ AspNetCoreModuleV2”替换为“ AspNetCoreModule”。默认情况下,它可以恢复到以前的程序包,但这种方法很麻烦,因为每次发布代码时都必须手动完成。

  1. 在Visual Studio解决方案中,在“属性”>“ PublishProfiles”下打开(或创建新的)发布配置文件。在PropertyGroup中添加:<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>。这行得通,但却是一个大问题,并且该应用程序将不会具有InProcess(默认)的所有性能提升

经过测试,我发现您可以使用其中一种,而不必同时使用两者。

我希望随着托管服务继续更新其运行时,该问题将随着时间的推移而解决,但目前希望这些解决方法也能对您有所帮助。

答案 1 :(得分:0)

此错误为documented,以及解决方案:

  

500.0进程内处理程序加载失败

     

工作进程失败。该应用程序无法启动。

     

ASP.NET Core模块无法找到.NET Core CLR,也无法找到进程内请求处理程序( aspnetcorev2_inprocess.dll )。检查:

     

最可能的情况是,您根本没有安装.NET Core运行时,或者至少没有安装正确的版本以匹配项目的目标。

答案 2 :(得分:0)

对于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>

答案 3 :(得分:0)

我在Interserver.com上遇到了同样的问题。

支持将我的应用程序池切换到64位,从而解决了该问题。根据我对其他Plesk托管提供商的了解,默认情况下,用于创建虚拟机的脚本默认情况下以32位创建应用程序池。我猜测AspNetCoreModuleV2需要64位,但这只是一个猜测。很高兴我的网站正在运行中。