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

Web API报Action Not Found:如何正确调用接收两参数的控制器接口?

解决"No action or method matched"错误:正确调用接收两个参数的POST API

看起来你遇到的核心问题是错误地用AddHeader来传递请求体数据,这直接导致后端无法正确解析你发送的参数,所以找不到匹配的API方法。咱们一步步来修正:

你的代码里的关键问题

  • AddHeader是用来添加HTTP请求头的,不是传递请求体内容的载体——你把JSON数据塞进Header里,后端完全识别不到这是接口需要的业务参数
  • 重复添加两次RequestBody类型的参数,会导致请求体格式混乱,后端根本没法解析出有效数据
  • 没有用RestSharp官方推荐的方式构造JSON请求体

正确的实现方式

首先要明确:后端接收两个参数通常有两种合理的传递方案,咱们分别对应处理:

方案1:后端接收一个包含两个模型的复合对象(最推荐)

假设你的后端Action定义是这样的:

[HttpPost("Payment/SyncWithIrd")]
public IActionResult SyncWithIrd([FromBody] SyncRequest request)
{
    // request包含bmodel和mode对应的属性
}

public class SyncRequest
{
    public BModel BModel { get; set; }
    public Mode Mode { get; set; }
}

那你的RestSharp代码应该改成这样:

RestService.BaseUrl = baseUrl;
var client = RestService.Instance;

// 先把两个参数打包成一个复合对象
var requestBody = new 
{
    BModel = bmodel,
    Mode = mode
};

var request = RestService.GetRestRequest("Payment/SyncWithIrd", Method.POST);
request.RequestFormat = DataFormat.Json;
// 用AddJsonBody添加请求体,这是RestSharp处理JSON请求的标准方式
request.AddJsonBody(requestBody);
// 无需手动添加Content-Type,RestSharp会自动处理

var response = client.Execute(request);
var value = response.Content;
return value;

方案2:后端直接接收两个独立参数(需后端特殊配置)

如果后端Action是直接接收两个独立的JSON参数(注意:ASP.NET Core默认不支持这种方式,需要额外配置):

[HttpPost("Payment/SyncWithIrd")]
public IActionResult SyncWithIrd([FromBody] BModel bmodel, [FromBody] Mode mode)
{
    // ...
}

这种场景下,因为HTTP请求体只能有一个,所以你要么把两个参数合并成一个JSON对象传递(和方案1一致),要么后端修改成接收复合对象。如果非要传两个独立参数,可能需要改用FormData传递,但这不符合JSON请求的常规场景,优先推荐方案1。

额外检查点

  • 确保bmodel和mode序列化成JSON后,属性名和后端API的参数结构完全匹配(注意大小写,或者后端配置了忽略大小写)
  • 如果你用的是RestSharp v107+版本,可以简化代码:var client = new RestClient(baseUrl);,然后用client.PostJsonAsync方法更简洁
  • 再核对一遍API路由拼写、HTTP方法是否和后端完全一致

这样调整后,后端就能正确识别你的参数,匹配到对应的API方法,不会再出现"No action or method matched"的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:49:10