2013-01-16 2 views
0

같은 문제가있는 페이지가 많이 봤지만 문제를 해결할 수 없었습니다. 그래서 나는 WEbApiConfig의 컨트롤러ASP.NET mvc multiple routing

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)); 
    } 

이이이 : 나는하지 않는

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 } 
     ); 
    } 

whay 내가 로컬 호스트/API/질문과 로컬 호스트/API/질문/1을 입력 할 때

는 ..

감사합니다 ... 나에게 여러 경로 오류를 제공

+0

당신은 경로가 타격을 받고있는 것을 볼 수 nuget에 사용할 수있는 경로 디버거를 사용할 수 있습니다 : 다음으로 라우팅을 변경http://nuget.org/packages/routedebugger – drneel

답변

0
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 } 
);