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)