我一直在试图添加第二个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