ASP.NET Web APIヘルプページと関連するMVC.ApiExplorerを使用している場合、http経由でアクセスできる有効なルートがありますが、ApiExplorerでは検出されません。これらのルートは、一般的なルーティングルールが使用されている場合にのみ検出されます。より具体的なルールを(一般的なルールと組み合わせて)使用すると、ApiExplorerからルートが隠されるようです。
3つのルールの例では、2つのルートがコントローラーメソッドのGETアクションとPOSTアクションに関連しており、クエリパラメーターはMIAに送信されません。
public class SomeControllerController : ApiController
{
    [HttpPost] public HttpResponseMessage Post(PostObject value) { ... }
    [HttpGet] public IEnumerable<DisplayObject> GetAll() { ... }
    [HttpGet] public DisplayObject GetById(string id) { ... }
}
のルーティングルールを使用する場合
routes.MapHttpRoute(
    name: "ApiDefault",
    routeTemplate: "api/{controller}/{id}",
    defaults: new
              {
                  id = RouteParameter.Optional
              }
    );
ルートは、ApiExplorerによって適切に検出されます。
- POST:api / SomeController
- GET:api / SomeController
- GET:api / SomeController / {id}
しかし、あまり一般的ではなく、より意味のあるルールを追加する場合
routes.MapHttpRoute(
    name: "ApiSomeControllerDefault",
    routeTemplate: "api/somecontroller/{id}",
    defaults: new
              {
                controller = "SomeController",
                id = RouteParameter.Optional
              }
    );
routes.MapHttpRoute(
    name: "ApiDefault",
    routeTemplate: "api/{controller}/{id}",
    defaults: new
              {
                  id = RouteParameter.Optional
              }
    );
ApiExplorerはのみを返します
- GET:api / somecontroller / {id}
一部のルートが見つからない原因は何ですか?