IIS 上的 ASP.NET Core 进行故障排除

作者: 来源:网络 点击数: 发布时间:2022年07月06日

403.14 禁止

该应用程序无法启动。记录以下错误:

The Web server is configured to not list the contents of this directory.

该错误通常是由托管系统上的部署中断引起的,包括以下任何一种情况:

· 该应用程序部署到托管系统上的错误文件夹。

· 部署过程未能将应用程序的所有文件和文件夹移动到托管系统上的部署文件夹。

· 部署中缺少web.config文件,或者web.config文件内容格式错误。

执行以下步骤:

1. 从托管系统上的部署文件夹中删除所有文件和文件夹。

2. 使用常规部署方法(例如 Visual Studio、PowerShell 或手动部署 )将应用的发布文件夹的内容重新部署到托管系统:

确认web.config文件存在于部署中并且其内容正确。

Azure 应用服务上托管时,确认应用已部署到该D:\home\site\wwwroot文件夹。

当应用程序由 IIS 托管时,确认应用程序已部署到IIS 管理器基本设置中显示的 IIS物理路径

3. 通过将托管系统上的部署与项目的发布文件夹的内容进行比较,确认应用的所有文件和文件夹都已部署。

有关已发布 ASP.NET Core 应用程序布局的详细信息,请参阅ASP.NET Core 目录结构。有关web.config文件的详细信息,请参阅IIS 的 ASP.NET Core 模块 (ANCM)

500内部服务器错误

应用程序启动,但错误阻止服务器完成请求。

此错误在启动期间或创建响应时发生在应用程序的代码中。响应可能不包含任何内容,或者响应可能在浏览器中显示为500 Internal Server Error 。应用程序事件日志通常表明应用程序正常启动。从服务器的角度来看,这是正确的。该应用程序确实启动了,但它无法生成有效响应。在服务器上的命令提示符处运行应用程序或启用 ASP.NET Core 模块标准输出日志以解决问题。

.NET Core Hosting Bundle 未安装或损坏时,也可能发生此错误。安装或修复 .NET Core Hosting Bundle(用于 IIS)或 Visual Studio(用于 IIS Express)的安装可能会解决此问题。

500.0 进程内处理程序加载失败

工作进程失败。应用程序无法启动。

加载ASP.NET Core 模块组件时发生未知错误。执行以下操作之一:

· 联系Microsoft 支持(选择Developer Tools,然后选择ASP.NET Core)。

·  Stack Overflow 上提问。

· 在我们的GitHub 存储库上提交问题。

500.30 进程中启动失败

工作进程失败。应用程序无法启动。

ASP.NET Core 模块尝试在进程内启动 .NET Core CLR,但无法启动。进程启动失败的原因通常可以通过应用程序事件日志和 ASP.NET Core 模块标准输出日志中的条目来确定。

常见故障情况:

· 由于针对不存在的 ASP.NET Core 共享框架版本,应用程序配置错误。检查目标计算机上安装了哪些版本的 ASP.NET Core 共享框架。

· 使用 Azure Key Vault,缺少对 Key Vault 的权限。检查目标 Key Vault 中的访问策略以确保授予正确的权限。

500.31 ANCM 未能找到本机依赖项

工作进程失败。应用程序无法启动。

ASP.NET Core 模块尝试在进程中启动 .NET Core 运行时,但无法启动。此启动失败的最常见原因是未安装Microsoft.NETCore.App或运行时。Microsoft.AspNetCore.App如果应用程序部署到目标 ASP.NET Core 3.0 并且计算机上不存在该版本,则会发生此错误。示例错误消息如下:

复制

The specified framework 'Microsoft.NETCore.App', version '3.0.0' was not found. - The following frameworks were found: 2.2.1 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App] 3.0.0-preview5-27626-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App] 3.0.0-preview6-27713-13 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App] 3.0.0-preview6-27714-15 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App] 3.0.0-preview6-27723-08 at [C:\Program Files\dotnet\x64\shared\Microsoft.NETCore.App]

错误消息列出了所有已安装的 .NET Core 版本以及应用程序请求的版本。要修复此错误,请执行以下任一操作:

· 在计算机上安装适当版本的 .NET Core。

· 更改应用程序以针对计算机上存在的 .NET Core 版本。

· 将应用程序发布为独立部署

在开发中运行时(ASPNETCORE_ENVIRONMENT环境变量设置为Development),将特定错误写入 HTTP 响应。进程启动失败的原因也可以在应用程序事件日志中找到。

500.32 ANCM 加载 dll 失败

工作进程失败。应用程序无法启动。

此错误的最常见原因是应用程序是针对不兼容的处理器架构发布的。如果工作进程作为 32 位应用程序运行并且应用程序已发布到目标 64 位,则会发生此错误。

要修复此错误,请执行以下任一操作:

· 为与工作进程相同的处理器架构重新发布应用程序。

· 将应用发布为依赖于框架的部署

500.33 ANCM 请求处理程序加载失败

工作进程失败。应用程序无法启动。

该应用程序未引用该Microsoft.AspNetCore.App框架。只有以Microsoft.AspNetCore.App框架为目标的应用程序才能由ASP.NET Core 模块托管。

要修复此错误,请确认应用程序以Microsoft.AspNetCore.App框架为目标。检查.runtimeconfig.json以验证应用程序所针对的框架。

500.34 不支持 ANCM 混合主机模型

工作进程不能在同一进程中同时运行进程内应用和进程外应用。

要修复此错误,请在单独的 IIS 应用程序池中运行应用程序。

500.35 ANCM 同一进程中的多个进程内应用程序

工作进程不能在同一进程中运行多个进程内应用程序。

要修复此错误,请在单独的 IIS 应用程序池中运行应用程序。

500.36 ANCM 进程外处理程序加载失败

进程外请求处理程序aspnetcorev2_outofprocess.dll不在aspnetcorev2.dll文件旁边。这表明ASP.NET Core 模块的安装已损坏。

要修复此错误,请修复.NET Core Hosting Bundle(用于 IIS)或 Visual Studio(用于 IIS Express)的安装。

500.37 ANCM在启动时间限制内启动失败

ANCM 未能在提供的启动时间限制内启动。默认情况下,超时时间为 120 秒。

在同一台机器上启动大量应用程序时可能会出现此错误。在启动期间检查服务器上的 CPU/内存使用高峰。您可能需要错开多个应用程序的启动过程。

500.38 未找到 ANCM 应用程序 DLL

ANCM 未能找到应位于可执行文件旁边的应用程序 DLL。

使用进程内托管模型托管打包为单文件可执行文件的应用程序时会发生此错误。进程内模型要求 ANCM 将 .NET Core 应用程序加载到现有 IIS 进程中。单文件部署模型不支持此方案。在应用程序的项目文件中使用以下方法之一来修复此错误:

1. PublishSingleFile通过将MSBuild 属性设置为 来禁用单文件发布false

2. AspNetCoreHostingModel通过将MSBuild 属性设置为 切换到进程外托管模型OutOfProcess

502.5 进程失败

工作进程失败。应用程序无法启动。

ASP.NET Core 模块尝试启动工作进程,但无法启动。进程启动失败的原因通常可以通过应用程序事件日志和 ASP.NET Core 模块标准输出日志中的条目来确定。

一个常见的故障情况是应用程序配置错误,原因是针对不存在的 ASP.NET Core 共享框架版本。检查目标计算机上安装了哪些版本的 ASP.NET Core 共享框架。共享框架是一组程序集(.dll文件),它们安装在机器上并由元数据包(如Microsoft.AspNetCore.App. 元包引用可以指定最低要求的版本。有关详细信息,请参阅共享框架

当托管或应用程序配置错误导致工作进程失败时,返回502.5 Process Failure错误页面:

无法启动应用程序(错误代码0x800700c1

复制

EventID: 1010 Source: IIS AspNetCore Module V2 Failed to start application '/LM/W3SVC/6/ROOT/', ErrorCode '0x800700c1'.

应用程序无法启动,因为无法加载应用程序的程序集 ( .dll )。

当已发布的应用程序和 w3wp/iisexpress 进程之间存在位数不匹配时,会发生此错误。

确认应用程序池的 32 位设置正确:

1.  IIS 管理器的应用程序池中选择应用程序池

2. 操作面板的编辑应用程序池下选择高级设置

3. 设置启用 32 位应用程序

如果部署 32 位 (x86) 应用程序,请将值设置为True.

如果部署 64 位 (x64) 应用程序,请将值设置为False.

<Platform>确认项目文件中的 MSBuild 属性与应用的已发布位数之间没有冲突。

连接重置

如果在发送标头后发生错误,则服务器在发生错误时发送500 Internal Server Error为时已晚。当响应的复杂对象序列化期间发生错误时,通常会发生这种情况。此类错误在客户端上显示为连接重置错误。应用程序日志记录可以帮助解决这些类型的错误。

默认启动限制

ASP.NET Core 模块的默认启动时间限制 120 秒。当保留默认值时,在模块记录进程失败之前,应用程序可能需要最多两分钟才能启动。有关配置模块的信息,请参阅aspNetCore 元素的属性