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


115

我正在尝试使用.net core sdk 2.2附带的一项新功能,该功能据说可以将性能提高约400%。

令人印象深刻,因此我在ABP(ASP.NET Boilerplate)项目中进行了尝试

Template 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错误500.30-ANCM进程内启动失败

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

在流程设置中,有人对asp.net核心运行当前ABP是否成功?

我认为这可能仅在ABP vNext中可用。


检查是否有不具有POST属性的公共功能。设为私人
Mohan

Answers:


133

在ASP.NET Core 2.2中,IIS发布了新的服务器/托管模式,称为IIS InProcess托管。为了启用进程内托管,添加了csproj元素AspNetCoreHostingModel,以在web.config文件中将hostingModel设置为进程内。此外,web.config指向一个名为AspNetCoreModuleV2的新模块,该模块是进程内托管所必需的。

如果要部署到的目标计算机没有ANCMV2,则不能使用IIS InProcess托管。如果是这样,正确的行为是将dotnet托管捆绑包安装到目标计算机,或者降级到AspNetCoreModule。

资料来源:jkotalik(Github)

尝试更改csproj中的部分(使用文本编辑器进行编辑)

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

到以下...

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

来源(Github)


1
我使用了您的建议,但将其更改为InProcess,似乎效果很好。谢谢!
Jazb

4
10倍救生衣
Valentin Petkov,

2
我还必须在web.config中将InProcess更改为OutOfProcess托管
MateuszMigała19年

1
我想指出,包括AspNetCoreModule在VS2017上中断调试输出。https://github.com/aspnet/AspNetCore/issues/6609
Eric

1
这从根本上改变了网站在IIS上的运行方式?
hanzolo

48

从ASP.NET Core 3.0+和Visual Studio 19 16.3+版本开始,您将在项目.csproj文件中找到以下部分-

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

那里没有AspNetCoreHostingModel属性。您将在项目的属性中找到主机模型选择。在解决方案资源管理器中右键单击项目名称。单击属性。

在此处输入图片说明

单击调试菜单。

在此处输入图片说明

在此处输入图片说明

向下滚动以找到主机模型选项。

在此处输入图片说明

选择进程外。

在此处输入图片说明

保存该项目并运行IIS Express。

服务器部署的更新

当您在服务器中发布应用程序时,将出现如下所示的Web配置文件:

在此处输入图片说明

将“ hostingModel”的值从“ inprocess”更改为“ outofprocess”,如下所示:

在此处输入图片说明


当我发布到服务中后,按照您所说的,将'hostingModel'的值从'inprocess'更改为'outofprocess',但是现在我收到此错误:HTTP错误502.5-ANCM进程外启动失败
waki68

更改它的值之前可以吗?
Mohammad Sadiqur Ra​​hman

不,这
还不行

如果没有web.config文件,该怎么办
MyDaftQuestions

@MohammadSadiqurRahman这对我有用。但是将outofprocess更改为OutOfProcess可能会有所帮助。感谢您保存我的一天:)
M Hanif

22

就我而言,我最近在我的appstettings.json文件中更改了数据库连接字符串。没有适当的日志记录或错误捕获,我怀疑该错误会导致“ HTTP错误500.30-ANCM进程内启动失败”错误。

我偶然注意到x-freestyler与Tahir Khalid之间的交流,其中Tahir提出了启动时的IOC问题。由于我的创业公司最近没有更改,但是我的appstettings.json发生了变化-我确定我的appstettings.json中的连接字符串是问题的原因。我更正了错误的连接字符串,问题已解决。感谢整个社区。


4
感谢分享。我检查了我的appsettings.json,发现类型错误。那解决了问题。
heringer

同样 当我的appsettings.json文件缺少'{'时,我收到“ HTTP错误500.30-ANCM进程内启动失败”消息
JTech

谢谢,在我的appsettings.json中的连接字符串中,我错过了在本地sqlexpress连接字符串中用“ \\”转义“ \”的功能。因此,在修复之前,我使用的是“ Server = machine01 \ SQLEXPRESS; xxxx”,现在使用的是“ Server = machine01 \\ SQLEXPRESS; xxxx”,它可以完美运行!

老实说,直到查看Event Logs指示格式错误的JSON设置的系统,我才注意到我的问题。
vandsh

与@heringer所经历的相似,我的连接字符串中包含无效字符。删除它解决了问题。
亚历山大·桑托斯

12

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

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


10

ASP.NET Core 2.2或更高版本:对于使用进程内托管模型的64位(x64)独立式部署,请为32位(x86)进程禁用应用程序池。

在“ IIS管理器”>“应用程序池”的“动作”侧栏中,选择“设置应用程序池默认值”或“高级设置”。找到“启用32位应用程序”并将其值设置为False。

来源:https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0#create-the-iis-site


1
这项更改解决了我从ASP.NET Core 3.0转换到3.1的麻烦
SteveC '20

Dotnet核心3.1:我在pubxml中将SelfContained更改为false并收到错误。这样就解决了。
安德鲁·考文霍芬

6

我在运行Windows 10的开发机上遇到相同的错误。安装dotnet core托管捆绑包后,该错误没有消失。我必须去事件查看器以获取详细的错误。您的根本问题(如果有)可能与我的不同。重点是,如果您使用的是Windows计算机,则可以使用Event Viewer提供详细信息。希望这对某人有帮助。

事件查看器提供了错误详细信息


5

我在“应用程序”下查看了Windows日志。它显示错误消息和堆栈跟踪。我发现我缺少一个名为node_modules的文件夹。我创建了该文件夹并对其进行了修复。

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


+1,用于在Windows日志中查找详细的错误消息-这帮助我非常迅速地解决了该问题-谢谢!
tristankoffee


3

删除.cproj文件中的AspNetCoreHostingModel行对我有用。在我的另一个项目中没有这样的线路可以正常工作。

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

2
我不喜欢删除一些东西来解决问题,因为它掩盖了实际的问题,但是感谢x-freestyler的这篇文章,因为通过删除该行,它揭示了与IoC启动失败有关的潜在问题之一。依赖项未注册!
塔希尔·哈立德

3

尝试从最近从2.0升级到3.0的.Net Core项目上从OutOfProcess托管切换到InProcess托管时,我遇到了类似的问题。

经过数天的尝试来解决这个问题之后,我再也没有真正有用的错误了,我最终找到了一个针对我的案例的修复程序,我想分享给我,以防万一这对其他为此奋斗的人有所帮助。

对我来说,这是由一些Microsoft.AspNetCore程序包引起的。

删除所有引用的Microsoft.AspNetCore软件包后,其版本低于3.0.0(对于这些版本,没有可用的升级版本=> 3.0.0),不再发生此错误。

这些是我删除的软件包;

<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="2.2.1" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />

所有其他版本大于或等于3.0.0的Microsoft.AspNetCore程序包都可以正常工作。



2

此发布配置文件设置已为我修复:

配置发布配置文件->设置->网站扩展选项->

  • [x]安装ASP.NET Core网站扩展。


2

我发现了另一个问题,开始给出与问题相同的错误消息。我在这里共享此信息,以便在更改项目文件之前,您可以确保正确注册了服务。

我也正在运行.netcore 2.2,并且收到了相同的错误消息,因此我将项目文件从InProcess更改为OutOfProcess,就像在选定答案中一样。之后,当我收到“无法实例化实现类型”时,我找到了造成问题的真正原因:对我而言,这是因为:

services.AddScoped<IMyService, IMyService>();

代替

services.AddScoped<IMyService, MyService>();

相关文章: 为什么我的通用服务会收到错误“无法实例化实现类型”?


1
这也是我的情况。谢谢。
费利佩·罗梅罗

1

经过一整天的努力,我决定通过InProcess托管将asp.net核心应用程序托管在IIS上,我终于为此感到自豪和欣慰。数小时反复尝试通过相同的论坛,博客和SO问题尽力解决问题的方法,但在遵循上述所有方法之后,我仍然陷入困境。现在在这里我将描述我解决它的经验。

步骤1:在IIS中创建一个网站

步骤2:确保网站的AppPool的.Net CLR版本设置为“无托管代码”,并且AppPool->“高级设置”中的“启用32位应用程序”属性设置为false

步骤3:确保您的项目引用.Net core 2.2

步骤4:在ConfigureServices方法内的startup.cs文件中添加以下行

services.Configure<IISServerOptions>(options =>
{
     options.AutomaticAuthentication = false;
});

步骤6:添加以下Nuget程序包

Microsoft.AspNetCore.App v2.2.5或更高版本

Microsoft.AspNetCore.Server.IIS v2.2.2或更高版本

步骤7:将以下行添加到.csproj文件中

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

第8步:构建和发布您的代码(最好是x64 bitness

第9步:确保您在etc / hosts文件中添加了网站主机名

步骤10:重新启动万维网发布服务

现在测试您的asp.net核心应用程序,它应该使用InProcess托管进行托管。为了验证您的应用程序是否使用InProcess模式托管,请检查响应标头,并且其中应包含以下行

服务器:Microsoft-IIS / 10.0(IIS版本可以在您的系统上使用)

更新:下载并安装ASP.Net Core Hosting Bundle,它才能正常工作


1

通过为AspNetCoreModuleV2运行专用的应用程序池解决了我的问题

描述:

HTTP Error 500.34 - ANCM Mixed Hosting Models Not Supported

我在同一个应用程序池下运行多个应用程序。一些应用程序正在运行

<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />

导致错误的应用程序正在运行AspNetCoreModuleV2

<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />

我创建了一个专用于AspNetCoreModuleV2的新应用程序池,它解决了我的问题。


1

从2.2升级到3.1时,我在Azure App Service上遇到了此问题。最终原因是在App Service上安装了“ ASP.NET Core 2.2(x86)运行时”扩展。从Kudu中删除该扩展程序可以解决此问题!


1

哇,这个问题有很多答案,但是我遇到了同样的问题,我的解决方案与我在此处阅读的内容有所不同,而且非常简单。

我一直在使用正确的环境设置来部署应用程序以解决问题时遇到问题,所以我搞砸了launchsettings.json文件,并且将IIS配置文件中ASPNETCORE_ENVIRONMENT变量的值从“开发”更改为“生产”。 。将其更改回“开发”对我来说解决了这个问题。

  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }

1

就我而言,这是appsettings.json文件中的错误值。的价值是.\SQLEXPRESS,我将其更改为它的工作.\\SQLEXPRESS


我的也是由格式错误的appsettings.json文件引起的!
fosbie


0

因为应用程序崩溃。为谁节省了这个例外的时间!

错误代码表示它引发异常,因为它在初始阶段找不到文件。请参阅环境设置部分。在我的场景中,当我更改以下代码时,它起作用了

var environment = whb.GetSetting("environment");

var environment = "Development";// whb.GetSetting("environment");

因为我有appsettings.development.json但没有appsettings.production.json。为什么它找不到任何文件,因为它在正确的位置寻找其他东西。


0

借助.Net Core 2.2,您应该能够使用InProcess托管模型,因为它自然会更快:在IIS中处理所有内容,而IIS和您应用程序的Kestrel服务器之间无需进行额外的HTTP跳转。您可能想做的一件事就是添加此标签:AspNetCoreModuleV2注意新的AspNetCoreModuleV2与旧的AspNetCoreModule选项。要做的另一件重要事情是,检查Windows应用程序事件日志,以找出罪魁祸首。尽管错误消息可能含糊不清,但有时它们指向导致失败的代码中的确切行号。另外,如果您将CI / CD与TFS一起使用,则appsettings.json文件中可能存在未正确替换为其指定值的环境变量,这是我的例外来源之一。


0

我的Program.cs档案有问题。我试图连接的AddAzureKeyVault是很久以前删除的那个。

结论

This error could come to due to any silly error in the application. Debug step by step your application startup process.

0

就我而言,我的迁移在Azure中的特定环境上运行时失败,但在dev中运行良好。由于我们将服务配置为在启动过程中运行迁移,因此Web应用程序的实际启动失败。

我在环境上手动运行迁移以发现问题,然后对其进行了调整以应对该环境上的数据差异。

如果有人知道如何在不手动直接在数据库上运行的情况下看到迁移错误,那将很有用。


0

我只是有同样的问题。原来这是我这方面的愚蠢错误。

在ServiceCollection中,我尝试注册一个 abstract class

services.AddScoped<IMyInterface, MyClasss>();

这里MyClassabstract一些未知的原因,我嘿嘿:)

所以,伙计们,如果您有,HTTP Error 500.30 - ANCM In-Process Start Failure 只需回顾一下您的ServiceCollection


0

对我来说,一切都很好,但是问题是由于不同的VS版本发布,很奇怪!(最新VS 2019(16.4.2))。当我使用VS 2017发布应用程序时,它可以正常工作。

实际的问题是其依赖的JSON文件(例如,MyWebApp.deps.json在发布文件夹)。希望它能帮助某人。

在此处输入图片说明


最近,我发现该文件在发布的文件夹中可用。但是evenLogs中的错误消息指向此dep.json文件,并且在此JSON文件路径中提到的是runtimes/win-x64/native,不确定此指向的是同一文件夹还是某个路径
Premchandra Singh,

我在evenlog上遇到的实际问题是Could not find inprocess request handler. Captured output from invoking hostfxr: Error: An assembly specified in the application dependencies manifest (Cues.Web.deps.json) was not found: package: 'runtime.win-x64.Microsoft.NETCore.App', version: '2.2.8' path: 'runtimes/win-x64/native/mscordaccore_amd64_amd64_4.6.28207.03.dll'
Premchandra Singh,

0

请在同一线程中查看我的上一个答案,以了解整体。抱歉,有多个答案

经过进一步调查后,由于VS 2019选择了.net core 2.2的最新补丁(VS的默认行为),因此出现了问题。我要发布该应用程序是2.2.8。我们可以通过以下方式将其限制为特定的选择版本

<RuntimeFrameworkVersion>2.2.4</RuntimeFrameworkVersion>

看这里。即使没有应用最新的补丁程序,这也终于解决了我的问题。我可以从任何VS 2017或VS 2019进行构建,都可以发布.net core 2.2.0运行时版本的应用程序

在此处输入图片说明


0

我遇到了同样的错误,问题出在包Microsoft.Extension.Primitives版本与.net核心版本不兼容。这是从我的项目引用中的一个项目引用中引用的。

一旦更改了该项目中的Microsoft.Extension.Primitives。该问题已解决。

在Azure事件日志中,检查您遇到的错误以及它是否与程序包引用有关。试试上面提到的事情。

由于nuget软件包与.net版本紧密结合。只需确保引用该项目的所有程序包也应与.net版本紧密结合。


0

对我来说,我有一个复杂的应用启动程序,其中创建了自己的WebHostBuilder。这工作正常,但在尝试InProcess托管模式时失败。我想我在WebHostBuilder中错过了一些东西。因此,我确保始终调用WebHost.CreateDefaultBuilder(args),然后进行任何其他更改-基本上就像新的应用程序模板一样。

或对于使用IHostBuilder(而非IWebHostBuilder)的ASP核心3.1模板,请调用ConfigureWebHostDefaults

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                // add stuff here
                webBuilder.UseStartup<Startup>();
            });

0

就我而言,以上解决方案均无效。但是,当我从解决方案资源管理器中删除myproject.vspscc文件时,问题解决了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.