HTTP 错误 500.30 - ANCM 进程内启动失败
HTTP Error 500.30 - ANCM In-Process Start Failure
我正在试验 .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 Error 500.30 - ANCM In-Process Start Failure
我在 web.config 中设置 stdoutLogEnabled="true"
并重试后检查了日志 - 但没有条目。
有没有人运行在流程设置中针对asp.net核心成功运行当前ABP?
我认为这可能是 ABP vNext 中唯一可用的东西。
在 ASP.NET Core 2.2 中,随 IIS 发布了一个名为 IIS InProcess hosting 的新服务器/托管模式。为了启用进程内托管,添加了 csproj 元素 AspNetCoreHostingModel 以在 web.config 文件中将 hostingModel 设置为进程内。此外,web.config 指向进程内托管所需的名为 AspNetCoreModuleV2 的新模块。
如果您要部署到的目标机器没有 ANCMV2,则不能使用 IIS InProcess 托管。如果是这样,正确的行为是将 dotnet hosting bundle 安装到目标机器或降级到 AspNetCoreModule。
尝试更改 csproj 中的部分(使用文本编辑器编辑)
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
以下...
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
<AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
</PropertyGroup>
如果您正在使用 Visual Studio,并且有它的任何实例 运行,请将它们全部关闭。
您应该找到一个 .vs
子文件夹,您的
Visual Studio 解决方案(.sln
文件)驻留。
删除 .vs
文件夹并使用进程内托管模型重试。
此发布配置文件设置已为我修复:
配置发布配置文件 -> 设置 -> 站点扩展选项 ->
- [x] 安装 ASP.NET 核心站点扩展。
删除 .cproj 文件中的 AspNetCoreHostingModel 行对我有用。在我的另一个项目中没有这样的线,它运行良好。
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
我的是因为 program.cs 中的 UseKestrel()
2.2
中应该是.ConfigureKestrel()
就我而言,我最近更改了 appstettings.json 文件中的数据库连接字符串。如果没有日志记录或错误捕获,我怀疑这个错误最终导致了 "HTTP Error 500.30 - ANCM In-Process Start Failure" 错误。
我碰巧注意到 x-freestyler 和 Tahir Khalid 之间的交流,Tahir 在启动时提出了 IOC 问题。由于我的启动最近没有更改,但我的 appstettings.json 有 - 我确定我的 appstettings.json 中的连接字符串是问题的原因。我更正了一个不正确的连接字符串,问题就解决了。感谢整个社区。
ASP.NET Core 2.2 或更高版本:对于使用 in-process 托管模型的 64 位 (x64) self-contained 部署,禁用 32 位 (x86) 的应用程序池) 进程。
在 IIS 管理器 > 应用程序池的操作边栏中,select 设置应用程序池默认值或高级设置。找到启用 32 位应用程序并将值设置为 False。
在决定使用 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 or greater
Microsoft.AspNetCore.Server.IIS v2.2.2 or greater
第 7 步:将以下行添加到您的 .csproj 文件
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
第 8 步:构建并发布您的代码(最好是 x64 位数)
第 9 步:确保您在 etc/hosts 文件
中添加了您的网站主机名
第 10 步:重新启动万维网发布服务
现在测试您的 asp.net 核心应用程序,它应该使用 InProcess 托管
为了验证您的应用程序是否使用 InProcess 模式托管,请检查响应 headers,它应包含以下行
服务器:Microsoft-IIS/10.0(IIS 版本可以根据您的系统而定)
更新:下载并安装ASP.Net Core Hosting Bundle,这是它工作所必需的
我发现另一个问题开始给出与问题中相同的错误消息。我在这里分享这个,以便在更改项目文件之前,您可以确保您的服务已正确注册。
我也是 运行 .netcore 2.2 并且收到了相同的错误消息,因此我将项目文件从 InProcess 更改为 OutOfProcess,就像在所选答案中一样。之后,当我收到“无法实例化实现类型”时,我找到了问题的真正原因:
这对我来说是因为:
services.AddScoped<IMyService, IMyService>();
而不是
services.AddScoped<IMyService, MyService>();
相关post:
Why am I getting the error "Cannot instantiate implementation type" for my generic service?
对我来说,在 HostedService 中错误地注入了 DBContext。我按照这个改写了:
一切正常!
因为应用程序崩溃了。为谁节省了这个例外的时间!
并且错误代码说它抛出异常,因为它在初始阶段找不到文件。
请参阅环境设置部分。在我的场景中,当我更改以下代码时它起作用了
var environment = whb.GetSetting("environment");
至
var environment = "Development";// whb.GetSetting("environment");
因为我有 appsettings.development.json 但我没有 appsettings.production.json。为什么它找不到任何文件,因为它在正确的地方寻找不同的东西。
在可能的情况下,这只是一个拼写错误,它损坏并阻止了 JSON 设置文件的解析
在 .Net Core 2.2 中,您应该能够使用 InProcess 托管模型,因为它自然速度更快:所有内容都在 IIS 中处理,IIS 和应用程序的 Kestrel 服务器之间没有额外的 HTTP 跃点。您可能想要做的一件事是添加此标签:
AspNetCoreModuleV2
请注意新的 AspNetCoreModuleV2 与旧的 AspNetCoreModule 选项。
另一件重要的事情是,检查 Windows 应用程序事件日志,找出罪魁祸首。尽管那里的错误消息可能含糊不清,但它们偶尔会指向导致失败的代码中的确切行号。
此外,如果您将 CI/CD 与 TFS 一起使用,appsettings.json 文件中的环境变量可能未正确替换为它们的指定值,这对我来说是异常来源之一。
我的 Program.cs
文件有问题。我试图与很久以前删除的 AddAzureKeyVault
建立联系。
结论:
This error could come to due to any silly error in the application. Debug step by step your application startup process.
就我而言,我的迁移在 Azure 的特定环境中 运行 时失败,但在开发中 运行 正常。由于我们将服务配置为 运行 迁移作为启动的一部分,因此 Web 应用程序的实际启动失败。
我运行在环境上手动迁移发现问题,然后调整它以处理该环境上的数据差异。
如果有人知道我如何在不直接在数据库上手动 运行ning 的情况下看到迁移错误,那将很有用。
我在最近从 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" />
所有其他 Microsoft.AspNetCore 版本大于或等于 3.0.0 的软件包工作正常。
我刚遇到同样的问题。结果证明这是我这边的一个愚蠢的错误。
在 ServiceCollection 中我试图注册一个 abstract class
services.AddScoped<IMyInterface, MyClasss>();
其中 MyClass
是 abstract
出于某些我不知道的原因呵呵:)
伙计们,如果你有 HTTP Error 500.30 - ANCM In-Process Start Failure
只需查看您的 ServiceCollection
来自ASP.NET Core 3.0+ and visual studio 19 version 16.3+ 你会发现项目.csproj文件中的部分如下-
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
那里没有AspNetCoreHostingModel
属性。您会在项目的属性中找到托管模型选择。在解决方案资源管理器中右键单击项目名称。单击属性。
单击“调试”菜单。
向下滚动找到托管模型选项。
Select 进程外。
保存项目和 运行 IIS Express。
更新
对于服务器部署:
当您在服务器上发布您的应用程序时,会出现一个如下所示的 Web 配置文件:
将 'hostingModel'
的值从 'inprocess'
更改为 'outofprocess'
,如下所示:
从几条评论中,我了解到“OutOfProcess”对他们有用,而不是 'outofprocess'。
对我来说,一切都很好,但问题是由于不同的 VS 版本发布,很奇怪! (最新 VS 2019 (16.4.2))。当我使用 VS 2017 发布应用程序时,它工作正常。
实际问题在发布文件夹中的依赖项json文件(例如MyWebApp.deps.json
)中。希望对大家有帮助。
请在同一主题中查看我之前的回答以了解整体情况。抱歉有多个答案
经过进一步调查,问题的发生是由于 VS 2019 选择了 .net core 2.2 的最新补丁(VS 的默认行为),即 2.2.8 供我发布应用程序。我们可以使用
将其限制为特定版本的选择
<RuntimeFrameworkVersion>2.2.4</RuntimeFrameworkVersion>
See Here。这最终解决了我的问题,即使没有应用最新的补丁。我可以从任何 VS 2017 或 VS 2019 构建,都发布 .net core 2.2.0 运行时版本的应用程序
我遇到了同样的错误,问题是 Microsoft.Extension.Primitives 版本的包与 .net 核心版本不兼容。这是从我的项目引用的项目引用之一引用的。
一旦我更改了那个项目中的 Microsoft.Extension.Primitives。这个问题得到解决。
在 Azure 事件日志中,检查您遇到的错误以及它是否与包引用相关。试试上面我提到的东西。
因为 nuget 包与 .net 版本紧密结合。只需确保引用该项目的所有包也应与 .net 版本紧密耦合。
对我来说,我有一个复杂的应用程序启动,我在其中创建了自己的 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>();
});
我查看了应用程序下的 Windows 日志。它显示错误消息和堆栈跟踪。我发现我丢失了一个名为 node_modules 的文件夹。我创建了那个文件夹并修复了它。
我没有对 web.config 或项目文件进行任何更改。我的 .NETCoreApp 版本是 3.1
使用以下 link 下载 .NET Core 托管捆绑包安装程序:
Current .NET Core Hosting Bundle installer (direct download)
- 运行 IIS 服务器上的安装程序。
- 重新启动服务器或执行 net stop was /y 然后是 net start
命令中的 w3svc shell.
就我而言,上述解决方案均无效。
但是当我从解决方案资源管理器中删除 myproject.vspscc 文件时,问题就解决了。
通过 运行 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 的新应用程序池,它解决了我的问题。
我在 Startup.cs 中出现 运行 时间错误。 Schoolboy 错误 - 我对该文件做了一个小调整,但在部署到 Azure 之前没有 运行 我的应用程序在本地。该应用程序未成功启动,我收到 500.30 错误页面。
我在 Azure 应用服务上从 2.2 升级到 3.1 时遇到了这个问题。最终原因是应用服务上安装了 "ASP.NET Core 2.2 (x86) Runtime" 扩展。从 Kudu 中删除该扩展程序解决了这个问题!
我遇到了 .net core 3.1 的问题。我已经尝试了所有解决方案,但对我没有用。然后我查看了 IIS 日志。问题是应用程序无法与数据库建立连接,因为连接字符串无效。所以请查看 IIS 日志以查找问题它可能是运行时出现任何异常
开发服务器问题
在我的例子中,这是由于 SDK 版本。
我已经安装了 VS 2019 的所有最新更新,但还不够。
当我尝试使用 VS 开发服务器 (IISExpress/Kestrel) 启动 Web 应用程序时发生错误。
为了解决这个问题,我刚刚下载并安装了最新的 dotNetCore SDK。
那一刻它是版本 3.1.2.
问题解决了!
我遇到了同样的问题,因为我在 Startup.cs
class 和 ConfigureServices
方法中这样做:
services.AddScoped<IExamle, Examle>();
但是你必须在第一个写你的Interface
,在第二个写你的Class
当我的 Azure 服务立即尝试从 Azure KeyVault 获取机密而我忘记通过 KeyVault 授予服务权限时,我遇到了这个问题。
以防万一这对可能犯了与我相同错误的人有所帮助。
我的网站有 Certify the Web 的 SSL 证书。
发布时,我删除了_Well-Known文件夹,出现了这个错误。
如果我在我的虚拟机上解决这个问题之前 30 秒没有清空回收站,我就可以恢复该文件夹。
相反,我重新申请了我的证书,重新启动了该站点,问题就解决了。
我遇到这个问题是因为我编辑了 Program.cs 并删除了 运行 函数。再补充一下:
我在我的开发机器上遇到了同样的错误运行 Windows 10. 安装 dotnet core hosting bundle 后错误没有消失。我不得不去事件查看器来获取详细的错误。您的根本问题(如果有)可能与我的不同。重点是,如果您使用的是 Windows 计算机,事件查看器会提供详细信息。希望这对某人有所帮助。
哇,关于这个问题有很多答案,但我遇到了同样的问题,我的解决方案与我在此处阅读的任何解决方案都不一样,而且非常简单。
我在使用正确的环境设置将我的应用程序部署到 Azure 时遇到了问题,所以我弄乱了 launchsettings.json 文件,并且我更改了 ASPNETCORE_ENVIRONMENT 变量的值IIS 配置文件从“开发”到“生产”。将其改回“开发”解决了我的问题。
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
在这个回答中我要说的是确保你呃...在你的服务注册码中没有任何类似的东西..
while (!Debugger.IsAttached) {
Thread.Sleep(500);
}
这完全没有发生在我身上,而且经过 3 小时的以上所有答案和更多问题后,我绝对没有让我成为一个非常悲伤的男孩。
确保您的 *.deps.js json 文件已正确复制到部署位置
在我的例子中,appsettings.json 文件中的值是错误的。该值是 .\SQLEXPRESS
并且在我将其更改为 .\SQLEXPRESS
后它起作用了
HTTP 错误 500.30 – ANCM 进程内启动失败”也是一个一般性错误。要了解有关错误的更多信息
转到 Azure 门户 > 您的应用服务 > 在开发工具下打开控制台。
我们可以通过此控制台 运行 应用程序,从而可视化导致我们的应用程序无法加载的真正错误。
为此,我们的项目名称后跟“.exe”,然后按回车键。
对我们来说,是在现有核心项目上安装 EF 5 之后。
在我同事的电脑上,发布后,他有这个 DLL 文件:
mscordaccore_amd64_amd64_4.700.20.20201.dll
还有我,这个:
mscordaccore_amd64_amd64_4.700.20.36602.dll
他发布发布后,网站返回HTTP Error 500.30
。
我自己发布发布后,网站运行正常。
设置异常或缺少库或文件依赖项,如果您是 azure,请转到应用服务诊断然后记录,您将遇到问题
我在我的 asp 3.1 核心中遇到了同样的问题,错误是缺少 json 依赖文件所以我不得不将它添加到 wwwroot/ExternalDependencies in azure
使用 Elastic Beanstalk (EBS) 部署在 Amazon Web Services (AWS) 中托管时 AND 使用这个关于如何访问 EBS 容器中的配置值的 Whosebug 答案()
如果在 Elastic Beanstalk -> Environments -> [APP NAME] -> Configuration -> Software
菜单中没有设置任何配置值,您可能会看到此错误。
在 EBS 配置中设置任何单一值,使其消失。
这可能是由于配置加载块未能执行空检查以及整个网站不正常地失败,因为错误发生在应用程序 Startup
阶段。
就我而言,这是数据库连接问题。这个错误需要更清楚。我希望他们将来会这样做。基本上这是 Startup 中的 ConfigureServices 函数的问题。我的建议是尝试在 ConfigureServices 函数中添加所有 try catch 行,您可以找出问题所在。
就我而言,在花费大量时间后,问题是平台目标是 x86,将其更改为任何 CPU 后,问题已解决。
在我的例子中,我忘记在 appsetting.json 文件的两行之间添加一个逗号 (,)。我添加了逗号,之后就可以了。
而且是一般性错误。要了解有关该错误的更多信息,请转到 Azure 门户 > 您的应用服务 > 在开发工具下打开控制台。我们可以通过此控制台 运行 应用程序,从而可视化导致我们的应用程序无法加载的真正错误。为此,我们的项目名称后跟“.exe”,然后按回车键。
通过将相应网络核心站点应用程序池的应用程序池的“启用 32 位应用程序”设置为 False,我能够使站点在 InProcess 中运行。
我在尝试通过 Visual Studio 发布将(.NET Core 3.1/Angular 应用程序)部署到 Azure App Service 时遇到此错误。问题最终是服务器上的旧文件没有被正确删除 post 发布。
修复:
- 点击发布配置文件上的“编辑”
- “设置”选项卡 > 展开文件发布选项 > 选中“删除目标位置的其他文件”
- 重新发布
在 Visual Studio 中,我错误地 运行 调试模式为“IISExpress”,我更改为我的配置文件,现在一切正常
如果您在使用 .NET Core 应用程序配置 Azure Key Vault 后遇到此错误,请参阅以下文章。它一定会帮助您修复它。
https://medium.com/@aravindi.s.amarasinghe/configure-azure-key-vault-with-net-core-project-and-deploy-to-azure-app-service-7616303181e
我正在试验 .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 Error 500.30 - ANCM In-Process Start Failure
我在 web.config 中设置 stdoutLogEnabled="true"
并重试后检查了日志 - 但没有条目。
有没有人运行在流程设置中针对asp.net核心成功运行当前ABP?
我认为这可能是 ABP vNext 中唯一可用的东西。
在 ASP.NET Core 2.2 中,随 IIS 发布了一个名为 IIS InProcess hosting 的新服务器/托管模式。为了启用进程内托管,添加了 csproj 元素 AspNetCoreHostingModel 以在 web.config 文件中将 hostingModel 设置为进程内。此外,web.config 指向进程内托管所需的名为 AspNetCoreModuleV2 的新模块。
如果您要部署到的目标机器没有 ANCMV2,则不能使用 IIS InProcess 托管。如果是这样,正确的行为是将 dotnet hosting bundle 安装到目标机器或降级到 AspNetCoreModule。
尝试更改 csproj 中的部分(使用文本编辑器编辑)
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
以下...
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
<AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
</PropertyGroup>
如果您正在使用 Visual Studio,并且有它的任何实例 运行,请将它们全部关闭。
您应该找到一个 .vs
子文件夹,您的
Visual Studio 解决方案(.sln
文件)驻留。
删除 .vs
文件夹并使用进程内托管模型重试。
此发布配置文件设置已为我修复:
配置发布配置文件 -> 设置 -> 站点扩展选项 ->
- [x] 安装 ASP.NET 核心站点扩展。
删除 .cproj 文件中的 AspNetCoreHostingModel 行对我有用。在我的另一个项目中没有这样的线,它运行良好。
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
</PropertyGroup>
我的是因为 program.cs 中的 UseKestrel() 2.2
中应该是.ConfigureKestrel()就我而言,我最近更改了 appstettings.json 文件中的数据库连接字符串。如果没有日志记录或错误捕获,我怀疑这个错误最终导致了 "HTTP Error 500.30 - ANCM In-Process Start Failure" 错误。
我碰巧注意到 x-freestyler 和 Tahir Khalid 之间的交流,Tahir 在启动时提出了 IOC 问题。由于我的启动最近没有更改,但我的 appstettings.json 有 - 我确定我的 appstettings.json 中的连接字符串是问题的原因。我更正了一个不正确的连接字符串,问题就解决了。感谢整个社区。
ASP.NET Core 2.2 或更高版本:对于使用 in-process 托管模型的 64 位 (x64) self-contained 部署,禁用 32 位 (x86) 的应用程序池) 进程。
在 IIS 管理器 > 应用程序池的操作边栏中,select 设置应用程序池默认值或高级设置。找到启用 32 位应用程序并将值设置为 False。
在决定使用 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 or greater
Microsoft.AspNetCore.Server.IIS v2.2.2 or greater
第 7 步:将以下行添加到您的 .csproj 文件
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
第 8 步:构建并发布您的代码(最好是 x64 位数)
第 9 步:确保您在 etc/hosts 文件
中添加了您的网站主机名第 10 步:重新启动万维网发布服务
现在测试您的 asp.net 核心应用程序,它应该使用 InProcess 托管 为了验证您的应用程序是否使用 InProcess 模式托管,请检查响应 headers,它应包含以下行
服务器:Microsoft-IIS/10.0(IIS 版本可以根据您的系统而定)
更新:下载并安装ASP.Net Core Hosting Bundle,这是它工作所必需的
我发现另一个问题开始给出与问题中相同的错误消息。我在这里分享这个,以便在更改项目文件之前,您可以确保您的服务已正确注册。
我也是 运行 .netcore 2.2 并且收到了相同的错误消息,因此我将项目文件从 InProcess 更改为 OutOfProcess,就像在所选答案中一样。之后,当我收到“无法实例化实现类型”时,我找到了问题的真正原因: 这对我来说是因为:
services.AddScoped<IMyService, IMyService>();
而不是
services.AddScoped<IMyService, MyService>();
相关post: Why am I getting the error "Cannot instantiate implementation type" for my generic service?
对我来说,在 HostedService 中错误地注入了 DBContext。我按照这个改写了:
一切正常!
因为应用程序崩溃了。为谁节省了这个例外的时间!
并且错误代码说它抛出异常,因为它在初始阶段找不到文件。 请参阅环境设置部分。在我的场景中,当我更改以下代码时它起作用了
var environment = whb.GetSetting("environment");
至
var environment = "Development";// whb.GetSetting("environment");
因为我有 appsettings.development.json 但我没有 appsettings.production.json。为什么它找不到任何文件,因为它在正确的地方寻找不同的东西。
在可能的情况下,这只是一个拼写错误,它损坏并阻止了 JSON 设置文件的解析
在 .Net Core 2.2 中,您应该能够使用 InProcess 托管模型,因为它自然速度更快:所有内容都在 IIS 中处理,IIS 和应用程序的 Kestrel 服务器之间没有额外的 HTTP 跃点。您可能想要做的一件事是添加此标签: AspNetCoreModuleV2 请注意新的 AspNetCoreModuleV2 与旧的 AspNetCoreModule 选项。 另一件重要的事情是,检查 Windows 应用程序事件日志,找出罪魁祸首。尽管那里的错误消息可能含糊不清,但它们偶尔会指向导致失败的代码中的确切行号。 此外,如果您将 CI/CD 与 TFS 一起使用,appsettings.json 文件中的环境变量可能未正确替换为它们的指定值,这对我来说是异常来源之一。
我的 Program.cs
文件有问题。我试图与很久以前删除的 AddAzureKeyVault
建立联系。
结论:
This error could come to due to any silly error in the application. Debug step by step your application startup process.
就我而言,我的迁移在 Azure 的特定环境中 运行 时失败,但在开发中 运行 正常。由于我们将服务配置为 运行 迁移作为启动的一部分,因此 Web 应用程序的实际启动失败。
我运行在环境上手动迁移发现问题,然后调整它以处理该环境上的数据差异。
如果有人知道我如何在不直接在数据库上手动 运行ning 的情况下看到迁移错误,那将很有用。
我在最近从 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" />
所有其他 Microsoft.AspNetCore 版本大于或等于 3.0.0 的软件包工作正常。
我刚遇到同样的问题。结果证明这是我这边的一个愚蠢的错误。
在 ServiceCollection 中我试图注册一个 abstract class
services.AddScoped<IMyInterface, MyClasss>();
其中 MyClass
是 abstract
出于某些我不知道的原因呵呵:)
伙计们,如果你有 HTTP Error 500.30 - ANCM In-Process Start Failure
只需查看您的 ServiceCollection
来自ASP.NET Core 3.0+ and visual studio 19 version 16.3+ 你会发现项目.csproj文件中的部分如下-
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
那里没有AspNetCoreHostingModel
属性。您会在项目的属性中找到托管模型选择。在解决方案资源管理器中右键单击项目名称。单击属性。
单击“调试”菜单。
向下滚动找到托管模型选项。
Select 进程外。
保存项目和 运行 IIS Express。
更新 对于服务器部署:
当您在服务器上发布您的应用程序时,会出现一个如下所示的 Web 配置文件:
将 'hostingModel'
的值从 'inprocess'
更改为 'outofprocess'
,如下所示:
从几条评论中,我了解到“OutOfProcess”对他们有用,而不是 'outofprocess'。
对我来说,一切都很好,但问题是由于不同的 VS 版本发布,很奇怪! (最新 VS 2019 (16.4.2))。当我使用 VS 2017 发布应用程序时,它工作正常。
实际问题在发布文件夹中的依赖项json文件(例如MyWebApp.deps.json
)中。希望对大家有帮助。
请在同一主题中查看我之前的回答以了解整体情况。抱歉有多个答案
经过进一步调查,问题的发生是由于 VS 2019 选择了 .net core 2.2 的最新补丁(VS 的默认行为),即 2.2.8 供我发布应用程序。我们可以使用
将其限制为特定版本的选择<RuntimeFrameworkVersion>2.2.4</RuntimeFrameworkVersion>
See Here。这最终解决了我的问题,即使没有应用最新的补丁。我可以从任何 VS 2017 或 VS 2019 构建,都发布 .net core 2.2.0 运行时版本的应用程序
我遇到了同样的错误,问题是 Microsoft.Extension.Primitives 版本的包与 .net 核心版本不兼容。这是从我的项目引用的项目引用之一引用的。
一旦我更改了那个项目中的 Microsoft.Extension.Primitives。这个问题得到解决。
在 Azure 事件日志中,检查您遇到的错误以及它是否与包引用相关。试试上面我提到的东西。
因为 nuget 包与 .net 版本紧密结合。只需确保引用该项目的所有包也应与 .net 版本紧密耦合。
对我来说,我有一个复杂的应用程序启动,我在其中创建了自己的 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>();
});
我查看了应用程序下的 Windows 日志。它显示错误消息和堆栈跟踪。我发现我丢失了一个名为 node_modules 的文件夹。我创建了那个文件夹并修复了它。
我没有对 web.config 或项目文件进行任何更改。我的 .NETCoreApp 版本是 3.1
使用以下 link 下载 .NET Core 托管捆绑包安装程序:
Current .NET Core Hosting Bundle installer (direct download)
- 运行 IIS 服务器上的安装程序。
- 重新启动服务器或执行 net stop was /y 然后是 net start 命令中的 w3svc shell.
就我而言,上述解决方案均无效。 但是当我从解决方案资源管理器中删除 myproject.vspscc 文件时,问题就解决了。
通过 运行 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 的新应用程序池,它解决了我的问题。
我在 Startup.cs 中出现 运行 时间错误。 Schoolboy 错误 - 我对该文件做了一个小调整,但在部署到 Azure 之前没有 运行 我的应用程序在本地。该应用程序未成功启动,我收到 500.30 错误页面。
我在 Azure 应用服务上从 2.2 升级到 3.1 时遇到了这个问题。最终原因是应用服务上安装了 "ASP.NET Core 2.2 (x86) Runtime" 扩展。从 Kudu 中删除该扩展程序解决了这个问题!
我遇到了 .net core 3.1 的问题。我已经尝试了所有解决方案,但对我没有用。然后我查看了 IIS 日志。问题是应用程序无法与数据库建立连接,因为连接字符串无效。所以请查看 IIS 日志以查找问题它可能是运行时出现任何异常
开发服务器问题
在我的例子中,这是由于 SDK 版本。
我已经安装了 VS 2019 的所有最新更新,但还不够。
当我尝试使用 VS 开发服务器 (IISExpress/Kestrel) 启动 Web 应用程序时发生错误。
为了解决这个问题,我刚刚下载并安装了最新的 dotNetCore SDK。
那一刻它是版本 3.1.2.
问题解决了!
我遇到了同样的问题,因为我在 Startup.cs
class 和 ConfigureServices
方法中这样做:
services.AddScoped<IExamle, Examle>();
但是你必须在第一个写你的Interface
,在第二个写你的Class
当我的 Azure 服务立即尝试从 Azure KeyVault 获取机密而我忘记通过 KeyVault 授予服务权限时,我遇到了这个问题。
以防万一这对可能犯了与我相同错误的人有所帮助。
我的网站有 Certify the Web 的 SSL 证书。
发布时,我删除了_Well-Known文件夹,出现了这个错误。
如果我在我的虚拟机上解决这个问题之前 30 秒没有清空回收站,我就可以恢复该文件夹。
相反,我重新申请了我的证书,重新启动了该站点,问题就解决了。
我遇到这个问题是因为我编辑了 Program.cs 并删除了 运行 函数。再补充一下:
我在我的开发机器上遇到了同样的错误运行 Windows 10. 安装 dotnet core hosting bundle 后错误没有消失。我不得不去事件查看器来获取详细的错误。您的根本问题(如果有)可能与我的不同。重点是,如果您使用的是 Windows 计算机,事件查看器会提供详细信息。希望这对某人有所帮助。
哇,关于这个问题有很多答案,但我遇到了同样的问题,我的解决方案与我在此处阅读的任何解决方案都不一样,而且非常简单。
我在使用正确的环境设置将我的应用程序部署到 Azure 时遇到了问题,所以我弄乱了 launchsettings.json 文件,并且我更改了 ASPNETCORE_ENVIRONMENT 变量的值IIS 配置文件从“开发”到“生产”。将其改回“开发”解决了我的问题。
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
在这个回答中我要说的是确保你呃...在你的服务注册码中没有任何类似的东西..
while (!Debugger.IsAttached) {
Thread.Sleep(500);
}
这完全没有发生在我身上,而且经过 3 小时的以上所有答案和更多问题后,我绝对没有让我成为一个非常悲伤的男孩。
确保您的 *.deps.js json 文件已正确复制到部署位置
在我的例子中,appsettings.json 文件中的值是错误的。该值是 .\SQLEXPRESS
并且在我将其更改为 .\SQLEXPRESS
HTTP 错误 500.30 – ANCM 进程内启动失败”也是一个一般性错误。要了解有关错误的更多信息
转到 Azure 门户 > 您的应用服务 > 在开发工具下打开控制台。 我们可以通过此控制台 运行 应用程序,从而可视化导致我们的应用程序无法加载的真正错误。
为此,我们的项目名称后跟“.exe”,然后按回车键。
对我们来说,是在现有核心项目上安装 EF 5 之后。
在我同事的电脑上,发布后,他有这个 DLL 文件:
mscordaccore_amd64_amd64_4.700.20.20201.dll
还有我,这个:
mscordaccore_amd64_amd64_4.700.20.36602.dll
他发布发布后,网站返回HTTP Error 500.30
。
我自己发布发布后,网站运行正常。
设置异常或缺少库或文件依赖项,如果您是 azure,请转到应用服务诊断然后记录,您将遇到问题
我在我的 asp 3.1 核心中遇到了同样的问题,错误是缺少 json 依赖文件所以我不得不将它添加到 wwwroot/ExternalDependencies in azure
使用 Elastic Beanstalk (EBS) 部署在 Amazon Web Services (AWS) 中托管时 AND 使用这个关于如何访问 EBS 容器中的配置值的 Whosebug 答案(
如果在 Elastic Beanstalk -> Environments -> [APP NAME] -> Configuration -> Software
菜单中没有设置任何配置值,您可能会看到此错误。
在 EBS 配置中设置任何单一值,使其消失。
这可能是由于配置加载块未能执行空检查以及整个网站不正常地失败,因为错误发生在应用程序 Startup
阶段。
就我而言,这是数据库连接问题。这个错误需要更清楚。我希望他们将来会这样做。基本上这是 Startup 中的 ConfigureServices 函数的问题。我的建议是尝试在 ConfigureServices 函数中添加所有 try catch 行,您可以找出问题所在。
就我而言,在花费大量时间后,问题是平台目标是 x86,将其更改为任何 CPU 后,问题已解决。
在我的例子中,我忘记在 appsetting.json 文件的两行之间添加一个逗号 (,)。我添加了逗号,之后就可以了。
而且是一般性错误。要了解有关该错误的更多信息,请转到 Azure 门户 > 您的应用服务 > 在开发工具下打开控制台。我们可以通过此控制台 运行 应用程序,从而可视化导致我们的应用程序无法加载的真正错误。为此,我们的项目名称后跟“.exe”,然后按回车键。
通过将相应网络核心站点应用程序池的应用程序池的“启用 32 位应用程序”设置为 False,我能够使站点在 InProcess 中运行。
我在尝试通过 Visual Studio 发布将(.NET Core 3.1/Angular 应用程序)部署到 Azure App Service 时遇到此错误。问题最终是服务器上的旧文件没有被正确删除 post 发布。
修复:
- 点击发布配置文件上的“编辑”
- “设置”选项卡 > 展开文件发布选项 > 选中“删除目标位置的其他文件”
- 重新发布
在 Visual Studio 中,我错误地 运行 调试模式为“IISExpress”,我更改为我的配置文件,现在一切正常
如果您在使用 .NET Core 应用程序配置 Azure Key Vault 后遇到此错误,请参阅以下文章。它一定会帮助您修复它。 https://medium.com/@aravindi.s.amarasinghe/configure-azure-key-vault-with-net-core-project-and-deploy-to-azure-app-service-7616303181e