2

J'ai deux actions, et chaque fois que j'appelle explicitement la seconde, la première est appelée. Je dois être capable d'écrire en mysite.com/api/Awesome/GetSomeExamples, sans que cela déclenche toujours GetAllClassesRoutage, action incorrecte

public class AwesomeController : Controller 
{ 
    public IEnumerable<myClass> GetAllClasses() 
    { 
     //...some stuff 
    } 
    public IEnumerable<string> GetSomeExamples() 
    { 
     //...some stuff 
    } 
    //... also have some more actions which take in one parameter 
} 

mon routage est en tant que telle, mais ne fonctionne pas

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

erreur que je reçois : Plusieurs actions correspondant à la demande ont été trouvées

+0

Les routes que vous avez spécifiées sont correctes. Vous appelez probablement la méthode en interne d'une méthode à l'autre. Veuillez vérifier le code dans GetSomeExamples. – Kenneth

+0

Je l'ai fait appeler en javascript mais seulement sur une certaine page, j'ai enlevé (juste au cas) mais je reçois toujours cette erreur: Plusieurs actions ont été trouvées qui correspondent à la demande – datatest

Répondre

5

Vous utilisez l'API Web. La différence avec les actions MVC normales est que l'API Web examine le verbe HTTP pour déterminer l'action à appeler. Dans ce cas, vous avez deux méthodes qui commencent par Get

Cependant, cela devrait déclencher une erreur: Multiple actions were found that match the request... et il ne devrait pas appeler les deux actions.

L'URL que vous avez besoin est:

mysite.com/api/Awesome/ 

À partir de là, l'API Web appellera une méthode qui commence par Get. Vous devez supprimer l'autre méthode get et la mettre dans un autre contrôleur. L'API Web suppose que vous avez une action par verbe http

+0

Merci, n'a jamais su API Web agi différemment, merci . Suce que je dois mettre l'action dans un autre contrôleur, car ils obtiennent tous les deux des données similaires. L'un reçoit toutes les données, tandis que l'autre obtient toutes les données qui sont différentes. – datatest

Questions connexes