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
It’s because your routeTemplate uses the name
{id}for the action parameter but your action actually takes in a parameter with namexYZId.Try changing your action parameter to called
idand it should work:public string GetABCByXYZById(int id)