2017-02-14 81 views
0

我不知道爲什麼我收到一個「404未找到」以下GET調用我的API(使用郵遞員)ASP。 NET網絡API 2問題 - 請求的資源不支持HTTP方法「GET」

http://localhost:53840/api/v1/MessageLog/SomeStuff/3

在控制器中的方法如下

[System.Web.Http.HttpGet] 
    public string SomeStuff(int s) 
    {    
     return "Received input !";    
    } 

在WebApiConfig類的註冊方法具有唯一的途徑如下:

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

但是,當我更改代碼以

[System.Web.Http.HttpGet] 
    public string SomeStuff() 
    {    
     return "Received input !";    
    } 

呼叫http://localhost:53840/api/v1/LogMessage/SomeStuff作品和郵差顯示「:收到輸入!」字符串在響應正文中。

是否有一個特定的調用約定傳遞int /字符串等(我嘗試使用[FromUri]沒有太多成功)?我有另一個POST方法在受控的需要一個JObject,似乎工作得很好。

回答

1

它應該是這樣的:

[System.Web.Http.HttpGet] 
public string SomeStuff(int id) 
{    
    return "Received input !";    
} 

的Web API通過名稱的參數相匹配。在您的路線模板中,它被定義爲{id},因此動作參數名稱必須與此匹配。

第二個工作原因是因爲id是可選的,並且動作與模板匹配。

+0

是的,謝謝。這工作。 – user1554876

相關問題