2013-01-16 6 views
0

J'ai googlé beaucoup de pages avec les mêmes problèmes mais je n'ai pas pu résoudre mon problème. J'ai donc ce dans le contrôleurASP.NET mvc routage multiple

public IEnumerable<questions> Get() 
    { 
     return (UOW.Questions.GetAll()); 
    } 

    // GET api/questions/5 
    public questions Get(int id) 
    { 
     return (UOW.Questions.GetById(id)); 
    } 

    ////Basic Questions :: api/questions/basic 
    [ActionName("basic")] 
    public IEnumerable<questions> GetBasicQuestions() 
    { 
     return (UOW.Questions.GetBasicQuestions()); 
    } 

    [ActionName("basic")] 
    public questions GetBasicQuestionsById(int id) 
    { 
     return (UOW.Questions.GetBasicQuestions(id)); 
    } 

et ce dans le WEbApiConfig:

public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultController", 
      routeTemplate: "api/{controller}" 
     ); 

     config.Routes.MapHttpRoute(
      name: "DefaultControllerId", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: null, 
      constraints: new { id = @"^\d+$" } 
     ); 

     config.Routes.MapHttpRoute(
      name: "DefaultAction", 
      routeTemplate: "api/{controller}/{action}" 
     ); 

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

Je ne reçois pas whay quand je rentre localhost/api/questions et localhost/api/questions/1

me donne une erreur de route multiples ...

Merci ..

+0

Vous pouvez utiliser le débogueur d'itinéraire disponible sur NuGet pour voir ce que les routes sont touchées: http://nuget.org/packages/routedebugger – drneel

Répondre

0

Changez votre routage pour être comme suit:

config.Routes.MapHttpRoute(
    name: "DefaultController", 
    routeTemplate: "api/{controller}", 
    defaults: new { action = "GET" } 
); 

config.Routes.MapHttpRoute(
    name: "DefaultControllerId", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { action = "GET" }, 
    constraints: new { id = @"^\d+$" } 
); 

config.Routes.MapHttpRoute(
    name: "DefaultAction", 
    routeTemplate: "api/{controller}/{action}" 
); 

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