【问题标题】:HTTP Error 500.30 - ANCM In-Process Start FailureHTTP 错误 500.30 - ANCM 进程内启动失败
【发布时间】:2019-05-17 14:30:10
【问题描述】:

我正在试验 .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 进程中启动失败

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

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

我认为这可能只有 ABP vNext 才有。

【问题讨论】:

  • 检查是否有没有POST属性的公共函数。将其设为私有
  • 我似乎无法添加帖子,所以在这里发表评论。我的问题从核心 2.1 迁移到核心 3.1 时开始出现,问题出在事件日志上。我没有在事件日志中设置要记录的区域
  • 我的问题是我在启动文件 app.UseFileServer(new FileServerOptions { FileProvider=new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(),"pdfs")), RequestPath="/发布" });忘记在那里创建 pdfs 文件夹

标签: c# .net-core hosting iis-express http-error


【解决方案1】:

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

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

Source: jkotalik (Github)

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

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

到下面...

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

Source (Github)

【讨论】:

  • 我使用了您的建议,但将其更改为InProcess,它似乎工作正常。谢谢!
  • 10x 救命恩人
  • 我还必须在 web.config 中将 InProcess 更改为 OutOfProcess 托管
  • 我想指出,包括 AspNetCoreModule 会破坏 VS2017 上的调试输出。 https://github.com/aspnet/AspNetCore/issues/6609
  • 这个问题要了我的命,很好的答案和解释。帮助我弄清楚我的 QA 服务器上的 web.config 不适用于 hostingModel="OutOfProcess",因此我更改为 OutOfProcess。同时,我的 TEST 和 PROD 服务器与 InProcess 一起工作。
【解决方案2】:

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

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

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

单击“调试”菜单。

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

选择进程外。

保存项目并运行 IIS Express。

更新 对于服务器部署:

当你在服务器上发布你的应用程序时,会有一个如下的网络配置文件:

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

从几条评论中,我了解到 'OutOfProcess' 对他们有用,而不是 'outofprocess'。

【讨论】:

  • 发布到服务器后,我将“hostingModel”的值从“inprocess”更改为“outofprocess”,但我现在收到此错误:HTTP Error 502.5 - ANCM Out-Of-进程启动失败
  • 在改变它的值之前可以吗?
  • 不,不行,但是通过安装Hosting Bundle解决了
  • 没有web.config文件怎么办
  • 老兄,你成就了我的一天!
【解决方案3】:

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

我碰巧注意到 x-freestyler 和 Tahir Khalid 之间的交流,其中 Tahir 在启动时提出了 IOC 问题。由于我的启动最近没有改变,但我的 appstettings.json 有 - 我确定我的 appstettings.json 中的连接字符串是问题的原因。我更正了一个不正确的连接字符串,问题就解决了。感谢整个社区。​​p>

【讨论】:

  • 感谢分享。我检查了我的 appsettings.json,发现输入错误。这解决了问题。
  • 类似地;当我的 appsettings.json 文件缺少“{” 时,我收到“HTTP 错误 500.30 - ANCM 进程中启动失败”消息
  • 谢谢,在我的连接字符串中的 appsettings.json 中,我错过了在本地 sqlexpress 连接字符串中通过“\\”转义“\”。所以在修复之前我有“Server=machine01\SQLEXPRESS;xxxx”,现在有了“Server=machine01\\SQLEXPRESS;xxxx”它运行完美!
  • 老实说,直到查看系统 Event Logs 表明 JSON 设置格式错误时,我才注意到我的问题。
  • 与@heringer 的经历类似,我的连接字符串中有一个无效字符。删除它解决了问题。
【解决方案4】:

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

您应该找到一个 .vs 子文件夹,您的 Visual Studio 解决方案(.sln 文件)驻留。
删除.vs 文件夹并使用进程内托管模型重试。

【讨论】:

  • 请记住,默认情况下,.vs 文件夹在文件资源管理器中可能不可见。要打开它,只需在文件资源管理器的路径中输入文件夹名称。就我而言,我刚刚删除了该目录中的所有文件
  • @AndreyTagaew,您可以从“文件夹选项”中选中“显示隐藏文件”选项以查看隐藏文件或文件夹。
【解决方案5】:

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

【讨论】:

  • 你这个家伙。这是一个真正的诊断忍者动作。谢谢。
【解决方案6】:

HTTP Error 500.30 – ANCM In-Process Start Failure”也是一个通用错误。要了解有关错误的更多信息

转到 Azure 门户 > 您的应用服务 > 在开发工具打开控制台下。 我们可以通过这个控制台运行应用程序,从而可视化导致我们的应用程序无法加载的真正错误。

为此,我们的项目名称后跟“.exe”,然后按回车键。

【讨论】:

  • 这绝对是正确的起点。我的问题与 IIS 无关,您的回答帮助我找出了根本原因。非常感谢。
  • 这个答案与 AZURE 相关。这对我来说是完美的答案。谢谢!
  • 这是 Azure 的正确答案!我实际上通过控制台得到了适用的异常消息。如果您不确定 .exe 文件的名称是什么,请在本地构建您的应用的发布版本并查看此文件夹:bin\Release\netcoreapp3.1
  • 喜欢你的方法,我有同样的感受,但从来没有新的我可以运行 exe。谢谢,我认为问题出在启动中
【解决方案7】:

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

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

Source: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.0#create-the-iis-site

【讨论】:

  • 这个更改解决了我从 ASP.NET Core 3.0 转换到 3.1 的麻烦
  • Dotnet core 3.1:我在 pubxml 中将 SelfContained 更改为 false 并收到错误消息。这解决了它。
【解决方案8】:

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

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

【讨论】:

  • +1 用于在 Windows 日志中查找详细的错误消息 - 这帮助我快速修复它 - 谢谢!
【解决方案9】:

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

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

【讨论】:

  • 我不喜欢删除东西来解决问题,因为它掩盖了实际问题,但感谢 x-freestyler 的这篇文章,因为删除该行它暴露了要执行的潜在问题未注册的依赖项之一导致 IoC 启动失败!
【解决方案10】:

在可能的情况下,这只是一个错误,会损坏并阻止解析 JSON 设置文件

【讨论】:

  • 这怎么可能?
【解决方案11】:

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

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

services.AddScoped&lt;IMyService, IMyService&gt;();

而不是

services.AddScoped&lt;IMyService, MyService&gt;();

相关文章: Why am I getting the error "Cannot instantiate implementation type" for my generic service?

【讨论】:

  • 这也是我的情况。谢谢。
【解决方案12】:

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

没有真正有用的错误继续发生,在花了几天时间试图解决这个问题后,我最终找到了一个解决我的案例的方法,我想我会分享它,以防它对其他苦苦挣扎的人有所帮助。

对我来说,这是由几个 Microsoft.AspNetCore 包引起的。

删除所有版本低于 3.0.0 的引用 Microsoft.AspNetCore 包(这些包没有可用的升级 >= 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 包都可以正常工作。

【讨论】:

    【解决方案13】:

    使用以下链接下载 .NET Core Hosting Bundle 安装程序:

    Current .NET Core Hosting Bundle installer (direct download)

    1. 在 IIS 服务器上运行安装程序。
    2. 重新启动服务器或执行 net stop 是 /y 后跟 net start 命令外壳中的 w3svc。

    【讨论】:

      【解决方案14】:

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

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

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

      【讨论】:

        【解决方案15】:

        【讨论】:

          【解决方案16】:

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

          第 1 步:在 IIS 中创建网站

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

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

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

          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 位

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

          第 10 步:重启万维网发布服务

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

          服务器:Microsoft-IIS/10.0(IIS 版本可能取决于您的系统)

          更新:下载并安装ASP.Net Core Hosting Bundle,这是它工作所必需的

          【讨论】:

            【解决方案17】:

            在我的情况下,它是 appsettings.json 文件中的错误值。该值为.\SQLEXPRESS,在我将其更改为.\\SQLEXPRESS后它工作了

            【讨论】:

            • 我的也是由格式错误的 appsettings.json 文件引起的!
            • 我遇到了同样的问题。我添加了 Serilog,但 appsettings.json 无效,因为它缺少逗号。谢谢。
            【解决方案18】:

            而且是一般性错误。要了解有关错误的更多信息,请转到 Azure 门户 > 您的应用服务 > 在开发工具打开控制台下。我们可以通过这个控制台运行应用程序,从而可视化导致我们的应用程序无法加载的真正错误。为此,我们的项目名称后跟“.exe”,然后按回车键。

            https://docs.microsoft.com/en-us/answers/questions/38950/http-error-50030-ancm-in-process-start-failure.html

            【讨论】:

              【解决方案19】:

              通过为 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 创建了一个新的应用程序池,它解决了我的问题。

              【讨论】:

                【解决方案20】:

                从 2.2 升级到 3.1 时,我在 Azure 应用服务上遇到了这个问题。最终原因是应用服务上安装了“ASP.NET Core 2.2 (x86) Runtime”扩展。从 Kudu 中删除该扩展程序解决了这个问题!

                【讨论】:

                  【解决方案21】:

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

                  在使用正确的环境设置将我的应用程序部署到 azure 时遇到问题,因此我弄乱了 launchsettings.json 文件,并且我已将 IIS 配置文件中 ASPNETCORE_ENVIRONMENT 变量的值从“开发”更改为“生产”。将其改回“开发”为我解决了这个问题。

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

                  【讨论】:

                    【解决方案22】:

                    确保您的 *.deps.js json 文件正确复制到部署位置

                    【讨论】:

                      【解决方案23】:

                      就我而言,这是数据库连接问题。这个错误需要更清楚。我希望他们将来会这样做。基本上这是 Startup 中 ConfigureServices 功能的问题。我的建议是尝试在 ConfigureServices 函数中添加所有行 try catch ,您可以找出问题所在。

                      【讨论】:

                        【解决方案24】:

                        在我花费大量时间之后,问题是平台目标是 x86,并且在将其更改为任何 CPU 后问题已修复。

                        【讨论】:

                        • 解决了我的问题!
                        【解决方案25】:

                        对我来说,在 HostedService 中错误地注入了 DBContext。我是这样重写的:

                        How should I inject a DbContext instance into an IHostedService?

                        一切正常!

                        【讨论】:

                          【解决方案26】:

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

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

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

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

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

                          【讨论】:

                            【解决方案27】:

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

                            【讨论】:

                              【解决方案28】:

                              我的Program.cs 文件有问题。我试图与很久以前被删除的AddAzureKeyVault 联系。

                              结论

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

                              【讨论】:

                                【解决方案29】:

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

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

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

                                【讨论】:

                                  【解决方案30】:

                                  我也遇到了同样的问题。事实证明这是我的一个愚蠢的错误。

                                  在 ServiceCollection 中,我尝试注册 abstract class

                                  services.AddScoped<IMyInterface, MyClasss>();
                                  

                                  MyClassabstract 的地方,因为我不知道的原因,呵呵 :)

                                  如果你有HTTP Error 500.30 - ANCM In-Process Start Failure 只需查看您的ServiceCollection

                                  【讨论】:

                                    猜你喜欢
                                    • 2019-08-25
                                    • 2020-08-23
                                    • 1970-01-01
                                    • 1970-01-01
                                    • 2019-06-12
                                    • 2020-02-14
                                    • 2021-01-29
                                    • 1970-01-01
                                    • 2020-09-12
                                    相关资源
                                    最近更新 更多