我已经在这上面花了一整天了,我现在都快秃了。
Controller :
[HttpPost]
public HttpResponseMessage AddSet(SetDto set)
[HttpPost]
[ActionName("copy")]
public HttpResponseMessage CopySet([FromUri]int[] ids)
路由顺序:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
routes.MapHttpRoute(
name: "Set",
routeTemplate: "api/set/{id}",
defaults: new { controller = "set", id = RouteParameter.Optional }
);
我用POST/api/set/copt/ids
调用copy
,用POST/api/set<调用
。我究竟做错了什么? add
/
完整错误:
"exceptionMessage": "Multiple actions were found that match the request: \r\nSystem.Net.Http.HttpResponseMessage AddSet(App.Repository.Models.Dtos.SetDto) on type App.Service.Controllers.SetController\r\nSystem.Net.Http.HttpResponseMessage
CopySet(Int32[]) on type App.Service.Controllers.SetController",
最佳答案
我想你在发出类似 POST/api/set/copt/ids
的请求时遇到了上述错误?
Web API 对路由变量名称与操作参数名称的匹配非常严格。
尝试执行以下操作并查看(注意:FromUri 中的 Name 参数会将路由变量名称映射到此处的参数...这称为别名):
[HttpPost]
[ActionName("copy")]
public HttpResponseMessage CopySet([FromUri(Name="id")]int[] ids)
关于c# - 在 WebAPI 帖子中发现了多项操作 - 为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17798867/