2017-06-23 1 views
0

J'ai deux méthodes Get dans mon contrôleur l'une d'elles avec deux paramètres de chaîne et la seconde a un paramètre de chaîne mais, quand je fais un appel à la méthode avec un paramètre de chaîne, elle renvoie 404, while méthode avec deux paramètres de chaîne fonctionne très bien. Je pense que j'ai des problèmes avec mon routage.WebApi actionmethod avec paramètre de chaîne notFound

RouteConfig.cs:

routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 
      routes.MapHttpRoute("Login", "api/{controller}/{email}/{password}", 
           new 
           { 
            email = UrlParameter.Optional, 
            password = UrlParameter.Optional 
           }); 

WebApiConfig.cs:

config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 

Controller:

[HttpGet] 
     public IHttpActionResult Validate(string id) 
     { 
      //Some code here // doesn't work 
     } 

     [HttpGet] 
     public IHttpActionResult GetCitizen(string email, string password) 
     { 
      //Some code here //works fine 
     } 

Répondre

0

Pouvez-vous essayer avec l'attribut de routage? Comme, juste au-dessus Valider Méthode ajouter l'attribut

[Route("api/<controllername>/Validate")] 

et tout en appelant, vous pouvez appeler comme

http://<localhost>:<port>/api/<controllername>/validate?id=123 

espérons que cette aide

+0

Il fonctionne, je vous remercie de votre aide. Je vous remercie. – Jack

+0

Pouvez-vous s'il vous plaît marquer comme réponse alors –