title: Multiple actions for the same HttpVerb
body: <p>I have a Web API controller with the following actions:</p>
  
  <pre><code>    [HttpPut]
      public string Put(int id, JObject data)
  
      [HttpPut, ActionName("Lock")]
      public bool Lock(int id)
  
      [HttpPut, ActionName("Unlock")]
      public bool Unlock(int id)
  </code></pre>
  
  <p>And the following routes mapped:</p>
  
  <pre><code>        routes.MapHttpRoute(
              name: "Api",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
          );
          routes.MapHttpRoute(
              name: "ApiAction",
              routeTemplate: "api/{controller}/{action}/{id}"
          );
  </code></pre>
  
  <p>When I make the following requests everything works as expected:</p>
  
  <pre><code>PUT /api/items/Lock/5
  PUT /api/items/Unlock/5
  </code></pre>
  
  <p>But when I attempt to make a request to:</p>
  
  <pre><code>PUT /api/items/5
  </code></pre>
  
  <p>I get the following exception:</p>
  
  <pre><code>Multiple actions were found that match the request:
      Put(int id, JObject data)
      Lock(int id)
      Unlock(int id)
  </code></pre>
  
  <p>I tried adding an empty action name to the default route but that did not help:</p>
  
  <pre><code>[HttpPut, ActionName("")]
  public string Put(int id, JObject data)
  </code></pre>
  
  <p>Any ideas how I can combine default RESTful routing with custom action names?</p>
  
  <p><strong>EDIT:</strong> The routing mechanism is not confused by the choice of controller. It is confused by the choice of <strong><em>action</em></strong> on a single controller. What I need is to match the default action when no action is specified. Hope that clarifies things.</p>