我一直在試圖添加第二個POST方法的默認ValuesController類,將採取ID參數和行爲等同於PUT方法,像這樣:ASP.NET Web API - 一個控制器上的多個POST方法?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http;
namespace WebCalendar.Controllers {
public class ValuesController : ApiController {
// GET /values
public IEnumerable<string> Get() {
return new string[] { "value1", "value2" };
}
// GET /values/5
public string Get(int id) {
return "value";
}
// POST /values
public void Post(string value) {
}
// POST /values/5
public void Post(int id, string value) {
Put(id, value);
}
// PUT /values/5
public void Put(int id, string value){
}
// DELETE /values/5
public void Delete(int id) {
}
}
}
問題是,當我添加第二個POST方法,任何時候我做一個POST請求,我得到的錯誤:
"No action was found on the controller 'values' that matches the request."
如果我註釋掉的方法之一(無所謂哪一個),POST將與其他方法的工作。我嘗試重命名這些方法,甚至在他們兩個上都使用[HttpPost]
,但沒有任何工作。
如何在單個ApiController中使用多個POST方法?
編輯
下面是我使用的唯一途徑:
routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { controller = "values", id = RouteParameter.Optional }
);
能否請您發表您的路線? – 2012-04-06 03:51:17
對控制器上有多少種後處理方法沒有限制。我懷疑這是一個路由問題 – TGH 2012-04-06 03:54:07
你打電話讓這個失敗的URL是什麼?如果您爲值提供查詢字符串會發生什麼?我認爲問題是值參數必須在那裏才能工作,因爲它沒有標記爲可選。 – 2012-05-10 01:02:06