Web Api Controller中的多个GET操作

时间:2013-05-08 13:58:00

标签: asp.net-web-api

我知道这个问题之前已被多次询问过。但我有一些不同的问题。

Single controller with multiple GET methods in ASP.NET Web API

我已经按照上面链接中的帖子中提供的步骤进行了操作,但我的api链接采用的是api / servicename / controller格式。

帖子中给出的路线是api / controller格式。任何人都可以帮助解决这个问题。我实际上用我的服务的确切名称重复了这些路线但没有用。

1 个答案:

答案 0 :(得分:2)

我得到了解决方案,而不是像api / controller / action一样编写路由,我按照下面给出的方式编写了它。我从链接http://lonetechie.com/2013/03/04/fixing-multiple-actions-were-found-that-match-the-request-aspnet-webapi/获得了代码块,然后指向我在原始帖子中给出的链接。

config.Routes.MapHttpRoute("DefaultApiWithAction", "{controller}/{action}", new { action = "Get" });
config.Routes.MapHttpRoute("DefaultApi", "{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" });
config.Routes.MapHttpRoute("DefaultApiGet", "{controller}", new { action = "Get" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });
config.Routes.MapHttpRoute("DefaultApiPost", "{controller}", new { action = "Post" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
config.Routes.MapHttpRoute("DefaultApiPut", "{controller}", new { action = "Put" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Put) });
config.Routes.MapHttpRoute("DefaultApiDelete", "{controller}", new { action = "Delete" }, new { httpMethod = new HttpMethodConstraint(HttpMethod.Delete) });