HTTP错误500.32 - ANCM无法在将自包含.Net Core 3.1应用程序部署到Azure后加载dll

6ie5vjzr  于 2022-12-14  发布在  .NET
关注(0)|答案(5)|浏览(308)

我有一个部署到Azure应用服务(西欧/基于Windows)的Asp.NET Core 3. 1应用程序。当我使用框架依赖部署模式时,应用程序启动顺利。
但是,当我尝试切换到自包含部署时,应用程序无法启动,并收到错误消息:*HTTP错误500.30 - ANCM进程内启动失败 *
将运行时从win-x86更改为x64没有解决问题。
我检查了安装的App Server运行时版本,看起来运行时可用(参见下面的屏幕截图)。
我做错了什么?

ha5z0ras

ha5z0ras1#

对于. net5,问题是相同的,我必须从web.config中删除hostingModel=“inprocess”,因此它显示以下内容

<?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=".\Hub.WebApi.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"  />
 </system.webServer>
</location>
</configuration>

编辑日期:2022年7月12日

在新站点上发现的**.net 7也是如此。您将在这里看到.net 7**,并且在csproject中我放置了AspNetCoreHostingModel和OutOfProcess值,这意味着当您发布它时,它将始终是确定的,之后不再编辑web.config。

<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
  <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

 </PropertyGroup>
lg40wkob

lg40wkob2#

万一上面没有解决你的问题,万一你错过了它在https://github.com/dotnet/aspnetcore/issues/8980,但这解决了我的问题。
根据DimaSUN在2019年6月25日的评论:
ASP.NET核心2.2或更高版本:对于使用行程序内装载模型的64比特(x64)自我包含部署,请停用32比特(x86)行程序的应用程序集区。
如何:在IIS中打开应用程序池。选择网站〉高级设置。将32位应用程序从True设置为False。

ax6ht2ek

ax6ht2ek3#

您是否尝试过在您的应用服务中添加.Net Core 3.1扩展?开发工具-〉扩展-〉添加-〉Asp.Net Core 3.1,其中包含您需要的运行时。
我昨天也遇到了同样的问题,添加了扩展后,问题就没有了。

kg7wmglp

kg7wmglp4#

如果它帮助了其他任何人...我的Program.cs中仍然有UseKestrel()(考虑到others mentioned the hosting model as the culprit,这是有意义的)。

public static IHostBuilder CreateHostBuilder(string[] args) =>
    Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder => {
            webBuilder.UseKestrel(k => k.AddServerHeader = false);
            webBuilder.UseStartup<Startup>();
        });

去除Kestrel(自然)缓解了问题。
我最终也在Kudu调试控制台中看到了这一点...
应用程序正在IIS进程内运行,但未配置为使用IIS服务器

y53ybaqx

y53ybaqx5#

与此错误提供的故障排除提示完全 * 无关 *,这也可能是由于.NET Core应用程序的 * 源目录 * 上的应用程序池帐户权限不足所致。
当服务帐户只有 * 读取权限 * 时,我得到了这个错误。添加 * 读取和执行权限 * 后(因为应用程序是.exe),错误消失了。

相关问题