我创建了一个 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 模块,但没有效果。
我的 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-->
您应该安装 .Net 的托管捆绑版本以在服务器上的 IIS 中添加对 .Net core 运行时的支持
所有下载: https://dotnet.microsoft.com/en-us/download/dotnet/5.0
这将是详细的答案,但我想分享我解决 HTTP 错误 500.19 的经验,特别是内部服务器错误代码 0x8007000d。在经历了相当大的挫折并多次尝试实施在 Stack Overflow、YouTube 和 Microsoft Documentation 等平台上找到的各种解决方案后,我终于能够识别并解决该问题。以下是我过去两天采取的步骤的详细说明:
C:\inetpub\wwwroot
目录并重新设置。经过大量故障排除后,我能够通过以下步骤确定问题的根本原因:
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 文件。
实施这些更改后,我能够在我的系统上成功运行该应用程序。我希望我的故障排除过程的详细说明对遇到类似问题的任何人都有帮助。