The problem is in the order that the routes are loaded. If they are like this:
// A route that enables RPC requests
routes.MapHttpRoute(
name: "RpcApi",
routeTemplate: "rpc/{controller}/{action}",
defaults: new { action = "Get" }
);
// Default route
routes.MapHttpRoute(
name: "Default",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
It will work fine. First the request will be mapped against the RPC, then against the controller (thaty may have or not an Id).