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

ASP.NET Core Web API添加多API方法时Fetch错误排查

问题根源:路由冲突

你遇到的问题是两个HttpGet方法使用了相同的路由路径,ASP.NET Core路由系统无法区分应该响应哪个请求,导致请求匹配失败。

默认情况下,若不给HttpGet指定具体路由模板,同控制器下的所有HttpGet方法都会匹配控制器的基础路径(比如/api/YourControllerName)。当两个Get方法共存时,路由系统无法确定调用哪个,就会引发错误。

解决方法:给每个Get方法指定唯一的路由模板

修改代码,给每个HttpGet添加独特的子路径,让路由能区分不同接口:

[HttpPost]
public string Login(string username, string pwd)
{
    // 原有逻辑
}

[HttpGet("category-data")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "Administrator")]
public IEnumerable<CategoryDataModel> GetCategoryData()
{
    List<CategoryDataModel> prodData = AdminProductResearchController.LoadProductSearch();
    return prodData;
}

[HttpGet("current-search")]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme, Roles = "Administrator")]
public IEnumerable<CurrentSearchDataModel> GetCurrentSearch()
{
    List<CurrentSearchDataModel> currSearchData = AdminCurrentSearchesController.BuildData();
    return currSearchData;
}

补充说明

  • 如果控制器上有[Route("api/[controller]")]这类路由前缀,两个接口的完整路径会变成/api/你的控制器名/category-data和/api/你的控制器名/current-search,路径唯一就能正常匹配。
  • 你注释掉的Name属性是用来生成路由名称的(比如用于Url.Link生成链接),不是用来区分请求路径的,所以即使开启它也解决不了路由冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:46:00