I'm trying to figure out the madness behind the Web API routing.When I try to post data like this:\[code\]curl -v -d "test" http://localhost:8088/services/SendData\[/code\]I get a 404, and the following error message:\[code\]{"Message":"No HTTP resource was found that matches the request URI 'http://localhost:8088/services/SendData'.","MessageDetail":"No action was found on the controller 'Test' that matches the request."}\[/code\]Here is the code for my test server.\[code\]public class TestController : ApiController{ [HttpPost] public void SendData(string data) { Console.WriteLine(data); }}class Program{ static void Main(string[] args) { var config = new HttpSelfHostConfiguration("http://localhost:8088"); config.Routes.MapHttpRoute( name: "API Default", routeTemplate:"services/SendData", defaults: new { controller = "Test", action = "SendData"}, constraints: null); using (var server = new HttpSelfHostServer(config)) { server.OpenAsync().Wait(); Console.WriteLine("Press Enter to quit."); Console.ReadLine(); } }}\[/code\]More generally, why has the ASP.NET team decided to make the MapHttpRoute method so confusing. Why does it take two anonymous objects....how is anyone supposed to know what properties these objects actually need?MSDN gives no help: http://msdn.microsoft.com/en-us/library/hh835483(v=vs.108).aspxAll the pain of a dynamically typed language without any of the benefit if you ask me...