Question

I have the following code in my WebApiConfig.cs

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

ABCController.cs

 public class ABCController : ApiController
 {        
     [AcceptVerbs("GET")]
     [ActionName("GetABCByXYZById")]
     public string GetABCByXYZById(int xYZId)
     {                
         return "GetABCByXYZById";
     }
 }

When I try to call the API it says not able to find the action in the controller.

 /api/ABC/GetABCByXYZById/12
Was it helpful?

Solution

It's because your routeTemplate uses the name {id} for the action parameter but your action actually takes in a parameter with name xYZId.

Try changing your action parameter to called id and it should work:
public string GetABCByXYZById(int id)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top