HTTP错误500.30 - ANCM进程内启动失败

175

我正在尝试使用 .NET Core SDK 2.2 中的一项新功能,据说可以将性能提高约 400%。

非常棒,所以我在我的 ABP (ASP.NET Boilerplate) 项目中尝试了一下。

模板 ASP.NET Core MVC 4.0.2.0

我将以下内容添加到我的 web.mv.cproj 文件中:

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" />
    <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" />
  </ItemGroup>

很不幸,我认为这个ABP框架的版本不兼容,因为项目根本无法运行,并抛出以下错误:(最终)

HTTP Error 500.30 - ANCM In-Process Start Failure

在web.config中设置stdoutLogEnabled="true"并重试后,我检查了日志 - 但没有任何记录。

有人成功地在asp.net core内部设置中运行当前ABP吗?

我想这可能只是在ABP vNext中可用的东西。


检查是否存在没有POST属性的公共函数。将其改为私有函数。 - Mohan
我似乎无法添加帖子,所以我在这里评论。我的问题始于从Core 2.1迁移到Core 3.1时,与事件日志有关的问题。我没有为记录日志设置事件日志中的区域。 - thatOneGuy
我的问题是我在启动文件中添加了以下代码 app.UseFileServer(new FileServerOptions { FileProvider=new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(),"pdfs")), RequestPath="/publish" }); 但忘记在那里创建pdfs文件夹。 - rahularyansharma
54个回答

173
在ASP.NET Core 2.2中,发布了一个名为IIS InProcess hosting的新服务器/托管模式,该模式需要在web.config文件中添加AspNetCoreHostingModel csproj元素以将hostingModel设置为inprocess。此外,web.config指向一个名为AspNetCoreModuleV2的新模块,该模块是inprocess托管所必需的。
如果您要部署的目标计算机没有ANCMV2,则不能使用IIS InProcess托管。此时,正确的行为是在目标计算机上安装dotnet hosting bundle或降级到AspNetCoreModule。 来源:jkotalik(Github) 尝试更改csproj中的部分(使用文本编辑器进行编辑)。
  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
  </PropertyGroup>

以下是关于IT技术的内容:

 <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
 </PropertyGroup>

源代码(Github)


1
我使用了您的建议,但将其更改为“InProcess”,似乎运行得很好。谢谢! - jazb
3
我还必须在web.config中将InProcess更改为OutOfProcess托管。 - cah1r
1
我想指出,包括 AspNetCoreModule 会破坏 VS2017 上的调试输出。https://github.com/aspnet/AspNetCore/issues/6609 - Eric
3
这个问题让我很苦恼,非常感谢您提供的答案和解释。帮助我发现我的QA服务器上的web.config不能与hostingModel="OutOfProcess"一起使用,所以我改成了OutOfProcess。而我的TEST和PROD服务器则使用InProcess。 - EspressoBeans
2
对我来说解决方法实际上只需要添加一行<AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>。我不需要添加AspNetCoreHostingModel部分。我正在使用VS 2019上的.NET Core 3.1。 - zpert
显示剩余9条评论

98

ASP.NET Core 3.0+ 和 Visual Studio 19 版本 16.3+ 开始,您会发现项目 .csproj 文件中的部分如下所示 -

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

那里没有 AspNetCoreHostingModel 属性。您可以在项目属性中找到托管模型选择。在解决方案资源管理器中右键单击项目名称,然后单击属性。

enter image description here

点击“调试”菜单。

enter image description here

enter image description here

向下滚动以找到托管模型选项。

enter image description here

选择 Out of Process。

enter image description here

保存项目并运行IIS Express。

更新 用于服务器部署:

当您在服务器上发布应用程序时,会有一个类似下面的Web配置文件:

enter image description here

'hostingModel'的值从'inprocess'更改为'outofprocess',如下所示:

enter image description here

从几个评论中,我了解到对于他们来说,“Out Of Process”比“默认(In Process)”更有效。

10
在我发布到服务器后,我按照您的建议将“hostingModel”的值从“inprocess”更改为“outofprocess”,但现在出现了以下错误:HTTP错误502.5-ANCM外部进程启动失败。 - wakiwiki
1
如果没有web.config文件,你该如何做到这一点? - MyDaftQuestions
@MohammadSadiqurRahman,这对我有用。但将outofprocess更改为OutOfProcess可能会有所帮助。感谢您挽救了我的一天 :) - Ninja
@waki68 尝试使用 OutOfProcess 而不是 outofprocess。 - Ninja
3
老兄,你让我的一天都变得美好了! - Simon Restrepo
显示剩余5条评论

46

在我的情况下,我最近在appstettings.json文件中更改了数据库连接字符串。由于没有记录或错误捕获措施,我怀疑这个错误最终导致了“HTTP Error 500.30 - ANCM In-Process Start Failure”错误。

我碰巧注意到x-freestyler和Tahir Khalid之间的交流,其中Tahir建议启动时出现了IOC问题。由于我的启动最近没有更改,但我的appstettings.json有变化——我确定appstettings.json中的连接字符串是问题的原因。我纠正了一个错误的连接字符串,问题得到解决。感谢整个社区。


9
谢谢分享。我检查了我的appsettings.json文件,发现了一个错别字。问题已经解决了。 - heringer
同样地,当我的appsettings.json文件缺少'{'时,我收到了“HTTP错误500.30 - ANCM进程内启动失败”的消息。 - JTech
4
谢谢。在我的 appsettings.json 文件中,我在本地 sqlexpress 连接字符串中忘记转义 "",所以在修正之前,我的连接字符串是 "Server=machine01\SQLEXPRESS;xxxx",现在使用 "Server=machine01\SQLEXPRESS;xxxx" 就可以完美运行了! - bau
我当时在一个功能分支上,把我的生产连接字符串改成了“xxxx”,只是为了确保我没有做任何愚蠢的事情。然后两周后我忘记了我已经这么做了。这真的救了我的后半生。到底发生了什么,“无法建立与数据库的连接”?!?! - DJA
我的问题是我正在使用Azure IAM进行数据库访问,而新的应用程序没有权限。 - Fabio Pinto
显示剩余4条评论

28

“HTTP错误500.30-ANCM进程启动失败”是一个通用错误。要了解更多关于该错误的信息

请前往Azure门户网站>您的应用服务>在“开发工具”下打开控制台。 我们可以通过此控制台运行应用程序,从而可视化导致我们的应用程序无法加载的真正错误。

为此,请输入我们项目的名称,后跟“.exe”,然后按Enter键运行。


2
这绝对是正确的起点。我的问题与IIS无关,而您的答案帮助我找出了根本原因。非常感谢。 - GETah
2
这个答案与AZURE有关。对我来说是完美的答案。谢谢! - Vilhelm H.
1
这是针对Azure的正确答案!我实际上通过控制台得到了适用的异常消息。如果您不确定您的.exe文件的名称是什么,请在本地构建应用程序的发行版本,并查看此文件夹:bin \ Release \ netcoreapp3.1。 - Brendan Sluke
1
喜欢你的方法,我也有同样的感觉,但从未知道我可以运行exe文件。谢谢,我发现问题在启动中。 - Sahib Khan

27
我在我的运行Windows 10的开发机上遇到了相同的错误。即使我安装了dotnet core hosting bundle,错误仍然存在。我不得不去事件查看器(Event Viewer)获取详细的错误信息。你的根本问题(如果有)可能与我的不同。关键是,如果你在Windows机器上,事件查看器(Event Viewer)可以提供详细信息。希望这能帮助某些人。 事件查看器提供的错误详情

1
你是我的兄弟。这真是一个了不起的诊断忍者动作。谢谢你。 - Timothy Macharia

20

如果您使用的是Visual Studio,并且有任何正在运行的实例,请关闭它们。

您应该在Visual Studio解决方案(.sln文件)所在的位置找到一个.vs子文件夹。
删除.vs文件夹,然后尝试使用进程内托管模型再次运行。


请记住,.vs文件夹可能默认情况下在文件资源管理器中不可见。要打开它,只需在文件资源管理器的路径中键入文件夹名称即可。在我的情况下,我刚刚从该目录中删除了所有文件。 - Andrey Tagaew
@AndreyTagaew,您可以从文件夹选项中检查“显示隐藏文件”选项以查看隐藏的文件或文件夹。 - Qamar Zaman

14

1
这个更改解决了我从ASP.NET Core 3.0转换到3.1的问题。 - SteveC
Dotnet core 3.1:我在我的pubxml中将SelfContained更改为false,然后出现了错误。这样修复了它。 - Andrew Cowenhoven

5

我查看了应用程序下的Windows日志,它显示了错误消息和堆栈跟踪。我发现我缺少一个名为node_modules的文件夹。我创建了该文件夹,问题得到解决。

我没有对web.config或项目文件进行任何更改。我的.NETCoreApp版本为3.1。


+1 查看Windows日志以获取详细的错误消息-这帮助我快速修复了它-谢谢! - tristankoffee

4
在我的情况中,这只是一个错别字,它破坏了并防止解析JSON设置文件。

那怎么可能呢? - tnk479

4
在我的情况下,删除.cproj文件中的AspNetCoreHostingModel行起作用了。 我的另一个项目中没有这样的行,而那个项目是正常工作的。
<PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>

3
我不喜欢通过删除东西来解决问题,因为这样会掩盖实际问题所在。但是感谢x-freestyler的帖子,通过删除那行代码,暴露出底层问题所在,即一个依赖项的IoC启动失败,因为它没有被注册! - Trevor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接