Blazor WebAssembly Hosted部署IIS仅API正常 根路径访问返回404
故障根因分析
从日志可以确认:API路由正常,非文件请求命中了Fallback兜底路由,但服务器返回404,本质是兜底逻辑找不到指定的index.html文件。
排查和解决步骤
- 确认发布操作正确性
Hosted部署模型必须右键Server项目执行发布,不能单独发布Client或Server项目。发布完成后检查C:\Temp\Project\publish\wwwroot路径下是否存在index.html、_framework文件夹等Blazor WASM的编译输出文件,缺失则说明发布时未包含Client项目内容。 - 检查项目引用配置
打开Server项目的.csproj文件,确认对Client项目的引用没有配置PrivateAssets="all",正确的引用格式参考:
加了<ProjectReference Include="..\Project.Web.Client\Project.Web.Client.csproj" />PrivateAssets限制会导致发布时忽略Client项目的输出内容。 - 验证IIS权限配置
给C:\Temp\Project\publish\wwwroot文件夹添加IIS_IUSRS用户组的读取与执行权限,权限不足会导致静态文件中间件无法读取文件返回404。 - 确认IIS站点物理路径配置
IIS站点的物理路径必须指向C:\Temp\Project\publish(Server发布的根目录),不能指向publish\wwwroot目录,否则Server的API路由会失效。 - 兜底验证
上述配置完成后,直接访问https://localhost:5001/index.html测试是否能正常打开,如果可以访问但根路径还是404,可将Startup中的兜底路由配置改为:
省略路径匹配参数即可覆盖所有非文件请求的兜底逻辑。endpoints.MapFallbackToFile("index.html");
内容的提问来源于stack exchange,提问作者ka-hn
相关产品推荐
相关产品推荐

