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

为何我的.NET 7 Razor Pages应用抛出AmbiguousMatchException异常?

解决.NET 7 Web应用中GET请求路由歧义异常问题

问题原因

你的代码中MapRazorPages()已为Index页面注册了默认路由,而MapFallbackToPage("/Index")又额外注册了一个指向该页面的回退端点。当访问非根路径时,路由系统匹配到两个均指向Index页面的端点,触发AmbiguousMatchException歧义异常。

解决方案

方案一:修改Razor页面路由(推荐)

通过给Index页面设置通配符路由模板,让它直接匹配所有请求路径:

  1. 打开Index.cshtml,修改顶部的@page指令:
@page "/{*path}"
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}
  1. 编辑Program.cs,移除app.MapFallbackToPage("/Index");这一行,仅保留MapRazorPages()即可。

方案二:调整回退路由注册顺序

若不想修改Razor页面路由,可调整路由注册顺序,让回退路由优先捕获未匹配的请求:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();

var app = builder.Build();

app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();

// 先注册回退路由,再注册Razor页面路由
app.MapFallbackToPage("/{*path}", "/Index");
app.MapRazorPages();

app.Run();

验证

修改完成后,访问https://localhost:7024/或https://localhost:7024/anythingelse等任意路径,都会正常返回Index页面,不再抛出歧义异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 13:22:43