我有一个使用web api MVC的web服务方法,我有一个方法“Create”,这个接收两个参数(Objects)但是当我尝试从SOAP UI调用这个方法时显示这个错误:
{ “message”:“错误。”, “exceptionMessage”:“no se pueden enlazarvariosparámetros('modelPerson'y'modelCodeory')al contenido de la solicitud。”, “exceptionType”:“System.InvalidOperationException”, “stackTrace”:“en System.Web.Http.Controllers.HttpActionBinding.ExecuteBindingAsync(HttpActionContext actionContext,CancellationToken cancellationToken)\ r \ n en System.Web.Http.Controllers.ActionFilterResult。 }
我的控制器api:
[HttpPost]
[Route("Create")]
public IHttpActionResult Create(Person modelPerson, Category modelCategory)
{
try
{
new PersonBLL().Create(modelPerson, modelCategory);
return Ok("success");
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
在soap UI POST方法中:
{
"name": "pepe",
"age": 23,
"address" : "xxxx 233"
"pets":{ //-> person model
"id": 3002,
"alias" : "vovi"
}
}
,
{
"id" : 101 //category model (i need only id)
}
但是如果我只发送一个参数(modelPerson或categoryPerson),则调用工作正常,但使用两个参数不起作用:/
答案 0 :(得分:1)
Web API不允许这样做。
相反,您可以使用包装两者的单个对象:
[HttpPost]
[Route("Create")]
public IHttpActionResult Create(CreateParameters parameters)
{
try
{
new PersonBLL().Create(parameters.Person, parameters.Category);
return Ok("success");
}
catch (Exception ex)
{
return BadRequest(ex.Message);
}
}
{
"Person": {
"name": "pepe",
"age": 23,
"address": "xxxx 233",
"pets": {
"id": 3002,
"alias": "vovi"
}
},
"Category": {
"id": 101
}
}
请求看起来像这样:
new String[] { this }