2014-10-30 39 views
0

我有以下两种操作的控制器上:属性路由到两个相似的操作相同的控制器

[Route("api/organization/{orgId}/person/{ver}/getmanagers", Name = "GetManagers")] 
public HttpResponseMessage GetManagers(Guid orgId, int ver) 
{ .... } 

[Route("api/organization/{orgId}/person/{ver}/getpersons", Name = "GetPersons")] 
public HttpResponseMessage GetPersons(Guid orgId, int ver) 
{ .... } 

当我做一个GET请求到以下网址:

...api/organization/2473ce5e-42e6-449f-9528-a29000921ded/person/1/getpersons 

我得到此错误:

Multiple actions were found that match the request. 

GetManagers和GetPersons都匹配。为什么是这样?为什么我的网址末尾的“/ getpersons”无关紧要?我可以做些什么来使他们分开识别?

回答

0

在网页API请求映射到WebApiConfig.cs基于HTTP verbs.Change的默认路由的行动,并确保您有

//Required for Attribute based routing 
config.MapHttpAttributeRoutes(); 

config.Routes.MapHttpRoute(
       name: "DefaultApiWithAction", 
       routeTemplate: "api/{controller}/{action}/{id}", 
       defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional } 
      ); 

希望这会有所帮助。

相关问题