2015-11-05 101 views
0

我試圖讓這個方法來路由和命中一個斷點,但沒有找到路由。Api方法路徑不會路由

在WebApi.config:

生活在一個叫做UserController的

/// <summary> 
/// Get specific user 
/// </summary> 
/// <param name="username"></param> 
/// <returns></returns> 
[HttpGet] 
public string GetUserInfo(string username) 
{ 
    string retval = username; 
    return retval; 
} 

然後我試着撥打電話,像這樣
http://localhost:59023/api/User/GetUserInfo/testuser

路徑控制器
public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 

我的API方法

但該方法未找到。我在瀏覽器中收到如下消息:
找不到與請求URI'http://localhost:59023/api/User/GetUserInfo/testuser'匹配的HTTP資源。

回答

1

您的路由配置定義了一個參數「id」,但您的操作方法接受一個名爲「username」的參數。 更改一個或另一個,使它們相同(兩個用戶名或兩個ID)。

+0

多數民衆贊成它,謝謝!現在我需要擴展我對路由的看法。 – BitShift

+0

沒問題。看看屬性路由(或直接路由)。我發現配置和管理更容易。 –

+0

其實,我認爲我可以刪除路由配置的{id}部分並在querystring上使用參數化的值,對嗎?這是Im的方向,因爲我需要處理其他方法的跳過/分頁操作。我正在評論這[鏈接](http://stackoverflow.com/questions/11640639/webapi-rc-getall-with-uri-parameters) – BitShift