You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Blazor Web App部署至IIS子目录时的路由映射错误

解决Blazor Web App部署IIS子目录后账户管理路径重复问题

问题原因

你遇到的路径重复问题,本质是相对路径拼接错误+应用未正确识别部署的子目录路径。当你在/MyApp/Account/Manage页面点击硬编码相对路径的Password链接时,浏览器会基于当前页面路径拼接新路径,导致Account/Manage重复;同时如果应用未配置PathBase,Identity的路由生成也可能出现偏差。

解决方案

1. 在Program.cs中配置PathBase

部署到IIS子目录时,必须告诉应用程序它的基础路径,添加以下代码:

var app = builder.Build();

// 配置应用的基础路径,对应IIS的MyApp子目录
app.UsePathBase("/MyApp");

// 后续中间件保持原有顺序
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();

// 确保Identity的Razor Pages路由正确映射
app.MapRazorPages();
app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

2. 检查并修复Identity页面的链接

进入项目中Areas/Identity/Pages/Account/Manage/Index.cshtml(或对应的管理页面视图文件),确认Password链接是否使用了Razor Pages的路由助手,而不是硬编码的相对路径:

正确写法(使用asp-page标签助手):

<a asp-page="./ChangePassword" class="nav-link">Password</a>

错误写法(硬编码相对路径,会导致拼接错误):

<a href="Account/Manage/ChangePassword" class="nav-link">Password</a>

3. 验证base href配置

确保App.razor中的base href配置正确,你已经设置的<base href="/MyApp/" />是正确的,无需修改。

原理说明

  • UsePathBase会让ASP.NET Core应用识别到自己部署在/MyApp子目录下,所有路由生成都会自动带上这个前缀。
  • 使用asp-page标签助手生成的链接,会基于当前页面的路由上下文正确生成绝对路径,避免相对路径拼接错误。

内容的提问来源于stack exchange,提问作者vbond007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:13:12