aspnetcore 仓库在 Visual Studio 中调试报 HTTP Error 500.33 ANCM Request Handler Load Failure 怎么处理?
【免费下载链接】aspnetcoreASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.项目地址: https://gitcode.com/GitHub_Trending/as/aspnetcore
在 Windows 上用 Visual Studio 打开 aspnetcore 仓库的项目并启动调试时,如果工具栏选择的 Web 主机组件是 IIS Express,浏览器会显示HTTP Error 500.33 - ANCM Request Handler Load Failure。仓库文档给出的结论是:面向 IIS 的 ASP.NET Core Module(ANCM)不支持在本仓库中直接运行项目,所以这个错误只能靠更换主机组件解决——在 Web 主机下拉框里选择 Kestrel(显示为项目名称的选项),而不是 IIS Express。
原因:IIS Express 与 ANCM 的关系
docs/BuildErrors.md 中 "Error: HTTP Error 500.33 - ANCM Request Handler Load Failure" 一节说明:
- ANCM for IIS 不支持运行本仓库中的项目;
- 使用
startvs.cmd在 Visual Studio 中打开解决方案后,必须使用 Kestrel web host 选项(即项目名称),不能选 IIS Express。
也就是说,500.33 不是构建产物或配置错误,而是 IIS Express 启动 ANCM 时加载失败的表现,在仓库项目上无法通过修复 ANCM 解决,只能换用 Kestrel 主机组件。
前提条件
按 docs/BuildFromSource.md 的 "Visual Studio on Windows" 部分,以下环境是打开仓库项目调试的前提:
Windows 系统,并安装了 Visual Studio。文档建议用仓库自带脚本安装/更新 VS,以确保 C++ 组件等依赖完整,且需要 Preview 通道(因为仓库使用预览版 SDK):
./eng/scripts/InstallVisualStudio.ps1 -Edition Enterprise -Channel Preview如需其他版本,把
Enterprise替换为Professional或Community。仓库包含 JavaScript 依赖,需要 Node.js。
打开项目前必须先在仓库根目录执行
restore.cmd,安装本地 .NET SDK 并完成仓库初始化:./restore.cmd根目录的 startvs.cmd 会检查
.dotnet\dotnet.exe是否存在,如果尚未安装会提示Run 'restore.cmd' to install tools并退出,这正是漏跑restore.cmd的典型表现。
用 Kestrel 主机组件运行项目
构建你要调试的项目区域。
build.cmd位于各项目目录下(例如src/Mvc下有Mvc.slnf对应的构建脚本),例如调试 Mvc 区域:cd src/Mvc ./build.cmd如果要构建整棵树,文档说明应使用
eng目录下的build.cmd;文档同时不推荐日常直接运行仓库级构建。用
startvs.cmd打开解决方案。根目录脚本的用法是startvs.cmd <SLN_FILE>,文档给出的示例:.\startvs.cmd .\src\Mvc\Mvc.sln注意:在当前仓库结构中,
src/Mvc下实际存在的解决方案过滤文件是Mvc.slnf(src/Mvc/startvs.cmd 就是把Mvc.slnf传给根脚本),文档示例写作Mvc.sln与当前目录内容有出入,实际执行时以仓库中真实存在的.sln/.slnf文件为准。也可以进入项目目录直接运行目录内的startvs.cmd,例如cd src/Mvc后执行./startvs.cmd,它会打开Mvc.slnf。startvs.cmd会把DOTNET_ROOT指到仓库的.dotnet目录并把它放到PATH最前面,让 Visual Studio 使用与构建脚本相同的本地 dotnet,所以不要用普通方式直接双击打开解决方案。在 Visual Studio 工具栏的绿色运行按钮(▶)左侧点击 Web 主机组件下拉框,选择项目名称对应的选项(即 Kestrel),不要选 IIS Express。以文档示例中的
MvcSandbox项目为例,下拉框中同时列出MvcSandbox(Kestrel)和IIS Express两项,应选择前者:
验证
- 文档给出的成功标准是:项目以 Kestrel 主机组件(项目名称选项)运行,而不是 IIS Express。按上述方式选择后启动调试,
500.33 - ANCM Request Handler Load Failure错误不应再出现。 - 如果
startvs.cmd报告.NET has not yet been installed,回到仓库根目录执行./restore.cmd后重试。
限制与补充
- 文档只声明 ANCM 在本仓库中"不被支持",没有提供让 IIS Express 可用的修复路径。对仓库内项目调试而言,Kestrel 是唯一文档支持的主机组件;这个限制不影响仓库项目的构建和调试流程。
- docs/BuildErrors.md 开头有一条通用提示:部分问题可能由旧构建产物与新提交冲突导致,建议在切换 checkout 之间执行
git clean -xddff。该命令会删除工作区中的未跟踪文件和目录(包括artifacts等构建产物),执行前确认本地没有需要保留的改动;如因文件被占用而失败,可先停止正在运行的dotnet或.NET Host进程再重试。它与 500.33 无直接关系,仅作为遇到其他构建错误时的备选手段。
【免费下载链接】aspnetcoreASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.项目地址: https://gitcode.com/GitHub_Trending/as/aspnetcore
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考