我有一个部署到Azure应用服务(西欧/基于Windows)的Asp.NET Core 3. 1应用程序。当我使用框架依赖部署模式时,应用程序启动顺利。但是,当我尝试切换到自包含部署时,应用程序无法启动,并收到错误消息:*HTTP错误500.30 - ANCM进程内启动失败 *将运行时从win-x86更改为x64没有解决问题。我检查了安装的App Server运行时版本,看起来运行时可用(参见下面的屏幕截图)。我做错了什么?
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>
lg40wkob2#
万一上面没有解决你的问题,万一你错过了它在https://github.com/dotnet/aspnetcore/issues/8980,但这解决了我的问题。根据DimaSUN在2019年6月25日的评论:ASP.NET核心2.2或更高版本:对于使用行程序内装载模型的64比特(x64)自我包含部署,请停用32比特(x86)行程序的应用程序集区。如何:在IIS中打开应用程序池。选择网站〉高级设置。将32位应用程序从True设置为False。
ax6ht2ek3#
您是否尝试过在您的应用服务中添加.Net Core 3.1扩展?开发工具-〉扩展-〉添加-〉Asp.Net Core 3.1,其中包含您需要的运行时。我昨天也遇到了同样的问题,添加了扩展后,问题就没有了。
kg7wmglp4#
如果它帮助了其他任何人...我的Program.cs中仍然有UseKestrel()(考虑到others mentioned the hosting model as the culprit,这是有意义的)。
Program.cs
UseKestrel()
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseKestrel(k => k.AddServerHeader = false); webBuilder.UseStartup<Startup>(); });
去除Kestrel(自然)缓解了问题。我最终也在Kudu调试控制台中看到了这一点...应用程序正在IIS进程内运行,但未配置为使用IIS服务器
y53ybaqx5#
与此错误提供的故障排除提示完全 * 无关 *,这也可能是由于.NET Core应用程序的 * 源目录 * 上的应用程序池帐户权限不足所致。当服务帐户只有 * 读取权限 * 时,我得到了这个错误。添加 * 读取和执行权限 * 后(因为应用程序是.exe),错误消失了。
.NET Core
.exe
5条答案
按热度按时间ha5z0ras1#
对于. net5,问题是相同的,我必须从web.config中删除hostingModel=“inprocess”,因此它显示以下内容
编辑日期:2022年7月12日
在新站点上发现的**.net 7也是如此。您将在这里看到.net 7**,并且在csproject中我放置了AspNetCoreHostingModel和OutOfProcess值,这意味着当您发布它时,它将始终是确定的,之后不再编辑web.config。
lg40wkob2#
万一上面没有解决你的问题,万一你错过了它在https://github.com/dotnet/aspnetcore/issues/8980,但这解决了我的问题。
根据DimaSUN在2019年6月25日的评论:
ASP.NET核心2.2或更高版本:对于使用行程序内装载模型的64比特(x64)自我包含部署,请停用32比特(x86)行程序的应用程序集区。
如何:在IIS中打开应用程序池。选择网站〉高级设置。将32位应用程序从True设置为False。
ax6ht2ek3#
您是否尝试过在您的应用服务中添加.Net Core 3.1扩展?开发工具-〉扩展-〉添加-〉Asp.Net Core 3.1,其中包含您需要的运行时。
我昨天也遇到了同样的问题,添加了扩展后,问题就没有了。
kg7wmglp4#
如果它帮助了其他任何人...我的
Program.cs
中仍然有UseKestrel()
(考虑到others mentioned the hosting model as the culprit,这是有意义的)。去除Kestrel(自然)缓解了问题。
我最终也在Kudu调试控制台中看到了这一点...
应用程序正在IIS进程内运行,但未配置为使用IIS服务器
y53ybaqx5#
与此错误提供的故障排除提示完全 * 无关 *,这也可能是由于
.NET Core
应用程序的 * 源目录 * 上的应用程序池帐户权限不足所致。当服务帐户只有 * 读取权限 * 时,我得到了这个错误。添加 * 读取和执行权限 * 后(因为应用程序是
.exe
),错误消失了。