Le routage basé sur le paramètre de chaîne de requête de nom

Je suis en train de configurer le routage dans mon MVC4 WebAPI projet.

Je veux être en mesure de rechercher pour les produits en fonction de leur nom ou de leur type comme suit:

/api/products?name=WidgetX - retourne tous les produits nommés WidgetX
/api/products?type=gadget - retourne tous les produits de type gadget

Les routes sont configurés comme ceci:

config.Routes.MapHttpRoute(
    name: "Get by name",
    routeTemplate: "api/products/{name}",
    defaults: new { controller = "ProductSearchApi", action = "GetProductsByName", name = string.Empty }
);

config.Routes.MapHttpRoute(
    name: "Get by type",
    routeTemplate: "api/products/{type}",
    defaults: new { controller = "ProductSearchApi", action = "GetProductsByType", type = string.Empty }
);

Le problème est que le nom du paramètre de chaîne de requête semble être ignoré si le premier est toujours celui qui est utilisé, quel que soit le nom du paramètre de chaîne de requête.
Comment puis-je modifier mon itinéraire pour y arriver?

InformationsquelleAutor rickythefox | 2012-09-27