2013-01-16 78 views
0

我搜索了很多頁面,但是我無法解決我的問題。 所以我有這個控制器ASP.NET mvc多重路由

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

,這在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 } 
     ); 
    } 

我沒有得到whay當我輸入localhost/API /問題,並在本地主機/ API /問題/ 1

給我多路由錯誤......

謝謝。

+0

您可以使用route調試可以用的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 } 
);