c# - 在 WebAPI 帖子中发现了多项操作 - 为什么这不起作用?

标签 c# asp.net-mvc routes asp.net-web-api

我已经在这上面花了一整天了,我现在都快秃了。

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/

相关文章:

c# - 使用 dataSet.GetXml() 获取内存

c# - 如果方法不进行异步调用,则将方法声明为 async 会带来什么危害?

c# - 如何配置 tfs 构建代理来构建发布配置文件?

asp.net-mvc - UserManager.FindByNameAsync 在 ASP.NET MVC 中缓慢

ruby-on-rails - rails 路由显示操作嵌套资源

c# - C# 中的平滑文本滚动

C# MVC 模型表达式到值

asp.net - <sessionState mode ="Off"/> 时使用 TempData

javascript - 检查配置文件是管理员还是用户并相应显示

kubernetes - 如何通过一个Ingress在同一服务上服务器多个路径?