L'API Web de Routes pour soutenir à la fois GUID et integer Id

Comment puis-je soutenir GET itinéraires pour les deux GUID et entier? Je me rends compte Guid ne sont pas l'idéal, mais c'est ce que c'est pour maintenant. Je suis désireux d'ajouter le support pour les entiers pour le rendre plus facile pour les utilisateurs à retenir et à communiquer ce que devrait être unique "clés".

Exemple itinéraires:

testcases/9D9A691A-AE95-45A4-A423-08DD1A69D0D1   
testcases/1234

Mon WebApiConfig:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();
    var routes = config.Routes;

    routes.MapHttpRoute("DefaultApiWithAction", 
        "Api/{controller}/{action}");

    routes.MapHttpRoute("DefaultApiWithKey",
        "Api/{controller}/{key}",
        new { action = "Get" },
        new { httpMethod = new HttpMethodConstraint(HttpMethod.Get), key = @"^\d+$" });

    routes.MapHttpRoute("DefaultApiWithId", 
        "Api/{controller}/{id}", 
        new { action = "Get" }, 
        new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });

    routes.MapHttpRoute("DefaultApiGet", 
        "Api/{controller}", 
        new { action = "Get" }, 
        new { httpMethod = new HttpMethodConstraint(HttpMethod.Get) });

    routes.MapHttpRoute("DefaultApiPost", 
        "Api/{controller}", 
        new { action = "Post" }, 
        new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) });
}

Mon contrôleur (signatures de méthode uniquement):

[RoutePrefix("Api/TestCases")]
public class TestCasesController : PlanControllerBase
{
    [Route("")]
    public OperationResult<IEnumerable<TestCaseDTO>> Get([FromUri] TestCaseRequest request)

    [Route("{id}")]
    [HttpGet]
    public OperationResult<TestCaseDTO> Get(Guid id)

    [Route("{key}")]
    [HttpGet]
    public OperationResult<TestCaseDTO> Get(int key)

    ...
}

Je suis un Erreur Interne du Serveur lorsque je tente d'appeler la ressource à l'aide de l'entier. Toute aide est appréciée!

Itinéraire unique qui prend une chaîne de caractères, et fait de la vérification?
Jetez un oeil à cette réponse: stackoverflow.com/questions/14353466/...

OriginalL'auteur gopherr | 2015-07-23