C# 找不到web api操作

C# 找不到web api操作,c#,asp.net-web-api,C#,Asp.net Web Api,控制器中有我们的主api,它有两个参数,但问题是,即使我们将这些参数发送到api路径,也会出现一个错误,即 没有匹配的操作或方法。因此,我们不知道如何成功调用我们的主api,该api在响应对象中返回数据 RestService.BaseUrl = baseUrl; var client = RestService.Instance; var request = RestService.GetRestRequest("Payment/SyncWithIrd",

控制器中有我们的主api,它有两个参数,但问题是,即使我们将这些参数发送到api路径,也会出现一个错误,即 没有匹配的操作或方法。因此,我们不知道如何成功调用我们的主api,该api在响应对象中返回数据

    RestService.BaseUrl = baseUrl;

    var client = RestService.Instance;

    var request = RestService.GetRestRequest("Payment/SyncWithIrd", 
    Method.POST);


    request.RequestFormat = DataFormat.Json;

    request.AddHeader("application/json; charset=utf-8", 
    JsonConvert.SerializeObject(bmodel), ParameterType.RequestBody);

    request.AddHeader("application/json; charset=utf-8", 
    JsonConvert.SerializeObject(mode)`enter code here`, 
    parameterType.RequestBody);

    request.AddHeader("Content-Type", "application/json;charset=utf-8");

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

我在代码中看到一些AddHeader,但没有一个AddBody。动词Post通常有身体部分。尝试在方法签名处添加[FromBody],如

[HttpPost] 
public HttpResponseMessage SyncWithIrd([FromBody]BillViewModel model, [FromBody]string mode) 
然后移除

request.AddHeader("application/json; charset=utf-8", JsonConvert.SerializeObject(bmodel), ParameterType.RequestBody);

request.AddHeader("application/json; charset=utf-8", JsonConvert.SerializeObject(mode)`enter code here`,  parameterType.RequestBody);
然后添加AddHeader

request.AddBody(new { model = JsonConvert.SerializeObject(bmodel) }, new { mode = JsonConvert.SerializeObject(mode) });
请注意,在调用post动词时始终使用身体部位

编辑

将SyncWithIrd的参数字符串模式放在BillViewModel中,然后重新构造方法签名,如下所示:

[HttpPost] 
public HttpResponseMessage SyncWithIrd([FromBody]BillViewModel model)
那么AddBody必须是

request.AddBody(new { model = bmodel } });
注:我使用类似的代码如下:

var restClient = new RestClient(model.ApiUrl);
var restRequest = new RestRequest("api/auth/createuser", Method.POST);
restRequest.RequestFormat = DataFormat.Json;
restRequest.AddBody(new {
                            FullName = model.FullName,
                            Email = model.Email,
                            Username = model.UserName,
                            Password = model.Password
                        });
var restResponse = restClient.Execute(restRequest);

我希望它能有所帮助。lmk

请您在上查看信息并重新回答您的问题好吗?谢谢!!我们已正确编辑了我们的问题。包括控制器方法的代码。[System.Web.Http.HttpPost]公共HttpResponseMessage SyncWithIrdBillViewModel,字符串模式{var result=\u servicePayment.Sync\u Irdmodel,mode;if result==success{返回新的HttpResponseMessageHttpStatusCode.OK;}否则{返回新的HttpResponseMessageHttpStatusCode.BadRequest;}}通过var response=client.Executerequest调用PaymentController时,未在PaymentController中找到此方法;请建议我们。根据您的建议编辑代码后,最后一行出现两个错误:request.AddBodynew{model=JsonConvert.SerializeObjectbmodel},new{mode=JsonConvert.SerializeObjectmode};与RestSharp.restRequest.AddBodyobject最匹配的重载方法,string有一些无效参数不能从“AnonymousType1”转换为“string”,请建议我们使用