2014-10-30 74 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 } 
      ); 

希望這會有所幫助。

相關問題