title: Web api routing methods with different parameter names
body: <p>This question could have been answered hundred times, but I couldnt find a proper resource. In a WebApi project (default project provided by VS) I have the ValuesController as below.</p>
  
  <pre><code>   public string Get(int id)
      {
          return "value";
      }
  
      [HttpGet]
      public string FindByName(string name)
      {
          return name;
      }
  
      [HttpGet]
      public string FindById(int id)
      {
          return id.ToString();
      }
  </code></pre>
  
  <p>In the WebApiConfig.cs, I have following route mapping.</p>
  
  <pre><code> config.Routes.MapHttpRoute(
                name: "actionApiById",
                routeTemplate: "api/{controller}/{action}/{Id}",
                defaults: new { action = "FindById", Id = RouteParameter.Optional }
                );
  
  
          config.Routes.MapHttpRoute(
              name: "actionApi",
              routeTemplate: "api/{controller}/{action}/{name}",
              defaults: new { name = RouteParameter.Optional }
          );
  
          config.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
          );
  </code></pre>
  
  <p>Now only the FindById() action is working when i try in the browser. Why does the rest of api calls return "<strong>No HTTP resource was found that matches the request</strong>"</p>
  
  <p>How can I get all three methods working? without using AttributeRouting. Am I lack of basic concepts of web api? ( i think yes)</p>