HTTP 错误 500.19 - 内部服务器错误代码 0x8007000d

问题描述 投票:0回答:2

我创建了一个 ASP.NET Core 5.0 Web API 项目。我可以在 IIS Express 中执行并运行该应用程序。如果我部署该应用程序,则会收到以下错误:

Server Error in Application "application name"
HTTP Error 500.19 – Internal Server Error
HRESULT: 0x8007000d
Description of HRESULT
The requested page cannot be accessed because the related configuration data for the page is invalid.

官方 MS 支持页面提到了两个原因:

出现此问题是因为ApplicationHost.config或Web.config 文件包含格式错误或无法识别的 XML 元素。 IIS 不能 识别未安装模块的 XML 元素。为了 例如,IIS URL 重写模块。

分辨率

使用以下方法之一:

Delete the malformed XML element from the ApplicationHost.config or Web.config file.
Check the unidentified XML elements, and then install the relevant IIS modules.

我安装了 IIS URL Rewrite 模块,但没有效果。 enter image description here

我的 web.config 附带我的构建/部署过程。对于配置,我使用 appsettings.json。所以我不知道我的 web.config 中是否需要更改以及更改哪些内容。有什么建议吗?

...\inetpub\wwwroot\MyApi\web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\MyApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: f659debd-cac7-4ce5-b2fe-d1a440a87811-->
asp.net-core-webapi iis-10
2个回答
10
投票

您应该安装 .Net 的托管捆绑版本以在服务器上的 IIS 中添加对 .Net core 运行时的支持

https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-aspnetcore-5.0.13-windows-hosting-bundle-installer

所有下载: https://dotnet.microsoft.com/en-us/download/dotnet/5.0


0
投票

这将是详细的答案,但我想分享我解决 HTTP 错误 500.19 的经验,特别是内部服务器错误代码 0x8007000d。在经历了相当大的挫折并多次尝试实施在 Stack Overflow、YouTube 和 Microsoft Documentation 等平台上找到的各种解决方案后,我终于能够识别并解决该问题。以下是我过去两天采取的步骤的详细说明:

初始故障排除步骤

  1. 已安装 .NET 6 托管捆绑包: 确保安装了 .NET 6 必要的托管组件。
  2. 已安装 .NET 6 SDK 和运行时: 已验证 SDK 和运行时是否已正确安装以支持该应用程序。
  3. 安装 URL 重写模块: 添加 URL 重写模块以有效管理 URL 路由。
  4. 已安装 ARR 模块: 设置应用程序请求路由 (ARR) 模块以实现负载平衡和反向代理功能。
  5. 修订了 Web.config: 检查并修改了应用程序的 web.config 文件以确保配置正确。
  6. 重新安装 IIS: 作为最后的手段,我重新安装了 Internet 信息服务 (IIS) 以重置环境。
  7. 重新配置默认网站: 在 IIS 中重新创建默认网站以及所有关联的应用程序池。
  8. 删除并重新创建wwwroot:清除
    C:\inetpub\wwwroot
    目录并重新设置。
  9. 本地发布应用程序:在本地构建应用程序并将其作为新应用程序部署到 IIS。
  10. 检查各个级别的所有模块:检查 IIS、默认网站以及默认网站下的应用程序中所有已安装的模块,以确保正确的配置和功能。

成功解决步骤

经过大量故障排除后,我能够通过以下步骤确定问题的根本原因:

  1. 已安装.NET 6 Hosting Bundle:确认安装成功。
  2. 比较 Web.config 文件: 根据同事的工作版本分析我的应用程序的 web.config 文件,以找出差异。
  3. 查看了 ApplicationHost.config: 检查了 ApplicationHost.config 文件,通常位于
    C:\Windows\System32\inetsrv\config

主要发现

  • 我发现 .NET 6 Hosting Bundle 安装不正确或不完整。具体来说,我缺少 AspNetCoreModuleV2,它应该配置为路径:

    %ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.dll

  • 此外,我在 system.webServer 节组中发现了一个缺失的节条目:

    <section name="aspNetCore" overrideModeDefault="Allow" />

  • 我确保 CLR 版本的应用程序池设置为 “无托管代码”,使用 集成管道模式 并使用默认应用程序池标识。我还在应用程序池的高级设置中禁用了 32 位应用程序的选项。 - 最后,我向应用程序文件夹的 IIS_IUSRS 用户组授予了必要的权限,以确保 IIS 可以访问 web.config 文件。

结论

实施这些更改后,我能够在我的系统上成功运行该应用程序。我希望我的故障排除过程的详细说明对遇到类似问题的任何人都有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.