title: Multiple controllers with same URL routes but different HTTP methods
body: <p>I've got a following two controllers:</p>
  
  <pre><code>[RoutePrefix("/some-resources")
  class CreationController : ApiController
  {
      [HttpPost, Route]
      public ... CreateResource(CreateData input)
      {
          // ...
      }
  }
  
  [RoutePrefix("/some-resources")
  class DisplayController : ApiController
  {
      [HttpGet, Route]
      public ... ListAllResources()
      {
          // ...
      }
  
      [HttpGet, Route("{publicKey:guid}"]
      public ... ShowSingleResource(Guid publicKey)
      {
          // ...
      }
  }
  </code></pre>
  
  <p>All three actions got in fact three different routes:</p>
  
  <ul>
  <li><code>GET /some-resources</code></li>
  <li><code>POST /some-resources</code></li>
  <li><code>GET /some-resources/aaaaa-bbb-ccc-dddd</code></li>
  </ul>
  
  <p>If I put them into single controller everything works just fine, however if I separate them (as shown above) WebApi throws following exception:</p>
  
  <blockquote>
    <p>Multiple controller types were found that match the URL. This can
    happen if attribute routes on multiple controllers match the requested
    URL.</p>
  </blockquote>
  
  <p>This message is quite obvious. It seems WebApi does not take HTTP method into account when looking for a right candidate for controller/action.</p>
  
  <p>How could I achieve the expected behavior?</p>
  
  <hr>
  
  <p><strong>UPDATE</strong>: I've digged a little into Web API internals and I understand that's the way it works by default. My goal is to separate the code and logic - in real world case those controllers have different dependencies and are a bit more complex. For the sake of maintenance, testability, project organization etc. they <em>should</em> be different objects (SOLID and stuff).</p>
  
  <p>I thought I could override some WebAPI services (<code>IControllerSelector</code> etc) however this seems to be a little bit risky and non-standard approach for this simple and - as I assumed - common case.</p>