You need to enable JavaScript to run this app. .NET 5.0调用API报System.InvalidOperationException无匹配路由错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

.NET 5.0调用API报System.InvalidOperationException无匹配路由错误如何解决

.NET 5.0 POST调用API路由不匹配异常排查方案

核心错误原因

你当前定义的GetLanguages接口显式标记了[HttpGet]特性,仅支持GET类型的请求,使用POST方法调用时无法匹配到对应路由,就会抛出System.InvalidOperationException: No route matches the supplied values异常。
如果要支持POST请求,直接修改接口的请求方法特性即可:

// 替换原有[HttpGet, Route("GetLanguages")]特性
[HttpPost, Route("GetLanguages")]
public Languages GetLanguages()
{
    try
    {
        return _Languages.GetLanguages();
    }
    catch (Exception)
    {
        throw;
    }
}

其他可能的排查点

  • 确认请求的URL拼写正确,该接口的正确请求路径为{服务地址}/api/Common/GetLanguages,注意路由占位符[controller]会自动去掉控制器类名的Controller后缀,所以路径中是Common而非CommonController
  • 检查Startup.cs的中间件配置顺序是否正确,.NET 5.0需确保路由和端点映射配置顺序无误:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    // 其他中间件...
    app.UseRouting();
    // 认证、授权中间件要放在UseRouting之后,UseEndpoints之前
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
  • 检查当前控制器下是否存在相同请求方法、相同路由模板的重复接口,路由冲突也会导致匹配失败

快速验证方案

如果需要临时兼容GET和POST两种请求方式,可以替换为如下特性:

[AcceptVerbs("GET", "POST"), Route("GetLanguages")]
public Languages GetLanguages()
{
    // 原有业务逻辑不变
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 18:15:07