2016-01-07 39 views
0

我正在嘗試使用ActionName方法創建帶有多個Get命令的WebAPI控制器。我在另一個項目上成功完成了這項工作,但是這個最新項目一直存在問題,無法理解爲什麼我的挖空視圖模型ajax調用無法找到特定的URI。ASP.Net WebAPI ActionName Route Not Found

WebApiConfig.cs:

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

控制器:

// GET api/lot 
    [ActionName("Default")] 
    public IEnumerable<DataObject> Get() 
    { 
     //... 
    } 

    // GET api/lot/Specific/5 
    [ActionName("Specific")] 
    public IEnumerable<DataObject> Get(int? data) 
    { 
     //... 
    } 

    // GET api/lot/5 
    public string Get(int id) 
    { 
     return "value"; 
    } 

爲得到我的默認操作完美的作品,但在具體操作繼續,當我試圖從視圖 - 調用它有這個錯誤型號:

「無法加載資源:服務器響應狀態爲404(未找到)」

我添加旁邊[HTTPGET] [ActionName( 「專用」)]並具有如下錯誤:

「GET http://localhost:57492/api/lot/Specific/1 404(未找到)」

我已經嘗試了幾種不同的東西,如刪除int?數據參數,但是當我嘗試構建項目時,它告訴我已經存在具有相同參數的現有函數,即使使用不同的操作名稱。

最終我想要有多個Get(參數)操作來調用與我的視圖模型進行交互。

回答

1

我能夠通過HTTPGET添加路由屬性和重命名我的所有功能,像GETALL(),GetSpecific(IND ID)等唯一的名稱來解決這個..

// GET api/lot 
    [HttpGet] 
    [Route("api/lot/GetAll")] 
    public IEnumerable<DataObject> GetAll() 
    {...} 

    // GET api/lot/GetSpecific/{id} 
    [HttpGet] 
    [Route("api/lot/GetSpecific/{id}")] 
    public IEnumerable<DataObject> GetSpecific(string id) 
    { 
0

添加新在config.Routes中路由如下。這會有幫助嗎?我沒有測試這個。

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