web-dev-qa-db-fra.com

Routage d'attributs avec paramètres facultatifs dans l'API Web ASP.NET

J'essaie d'utiliser le routage d'attributs de l'API Web 2 pour configurer une API personnalisée. J'ai ma route qui fonctionne de telle sorte que ma fonction est appelée, mais pour une raison quelconque, je dois passer mon premier paramètre pour que tout fonctionne correctement. Voici les URL que je souhaite prendre en charge:

http://mysite/api/servicename/parameter1
http://mysite/api/servicename/parameter1?parameter2=value2
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3&p4=v4

Les 3 dernières URL fonctionnent mais la première indique "Aucune action n'a été trouvée sur le 'nom du contrôleur' ​​du contrôleur qui correspond à la demande."

Mon contrôleur ressemble à ceci:

public class MyServiceController : ApiController
{
    [Route("api/servicename/{parameter1}")]
    [HttpGet]
    public async Task<ReturnType> Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "")
    {
        // process
    }
}
40
sohum

L'API Web nécessite de définir explicitement des valeurs facultatives même pour les types nullables ... afin que vous puissiez essayer de définir les éléments suivants et que votre première demande réussisse

DateTime? parameter2 = null
67
Kiran Challa