5
我有下面的代碼,但請求端(富()/酒吧())總是在No action was found on the controller 'Device' that matches the request.
ASP.NET的WebAPI - 沒有行動被發現
我在WebApiConfig已經定製路線:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new {id = RouteParameter.Optional}
);
我的ASP.NET的WebAPI控制器:
[HttpPost]
public void UpdateToken(string newToken)
{
_deviceHandler.UpdateToken(newToken);
}
要查詢我的ASP.NET的WebAPI我使用RestSharp。
private static void Send(string resource, Method method, object payload)
{
var client = new RestClient(baseUrl);
var request = new RestRequest(resource, method);
request.XmlSerializer = new JsonSerializer();
request.RequestFormat = DataFormat.Json;
request.AddBody(payload);
var response = client.Execute(request);
// ... handling response (exceptions, errors, ...)
}
public void Foo()
{
var newToken = "1234567890";
Send("/api/device/updatetoken", RestSharp.Method.POST, newToken);
}
public void Bar()
{
var newToken = new { newToken = "1234567890" };
Send("/api/device/updatetoken", RestSharp.Method.POST, newToken);
}
避免這種錯誤的唯一方法是用一個屬性創建一個包裝類(獲取;集;),它具有控制參數(newToken)的名稱。
我有很多請求發送一個或兩個自定義字符串(未定義的長度)作爲後(get的長度有限)。但是爲每個場景創建一個包裝器實現是真正的開銷!我正在尋找另一條路。
PS:我希望我沒有通過簡化方案所做的任何錯誤=)
謝謝,只是缺少[FromBody] - 屬性是錯誤。 – dannyyy 2013-02-28 14:24:54
這只是拯救了我的夜晚。我在b my我的腦袋,想知道爲什麼這一條特定的路線變成了404.這需要一個int,其餘的路線都採用參考類型。添加[FromBody]屬性的竅門。 – squillman 2015-04-12 06:09:59
1爲了挽救我半天的生命,一半已經浪費在這裏謝謝 – 2016-07-09 08:02:08