我知道有很多这些问题,但我似乎无法弄清楚为什么我在调用PostEmailTemplate操作时遇到“发现与请求匹配的多个操作:”错误。这些是行动方法:
(删除旧代码)
更新2:我删除了所有方法,将路由设置回默认路由,然后离开默认控制器接口。 2'get'方法有效,但Post仍然会出错。 现在是控制器:
public EmailTemplateModel Get(int id)
public List<EmailTemplateName> Get()
public void Post([FromBody]EmailTemplateModel data)
这是唯一的途径:
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
答案 0 :(得分:2)
我已经抛出一个快速项目来测试你的配置,即使我非常确定你已经正确实现了它。一切都在我的项目中工作,我可以POST到控制器并获得正确的响应等。
您确定要正确发送请求吗?因为http://<host>:<port>/api/<controller>
应该是您发送POST的地址。 URI中不需要执行其他操作,因为只有一个POST方法。框架应该掌握方法并自动使用该方法。显然,只有在实际存在两个或更多POST方法时才会出现“多个动作”错误。
您可以尝试的最后一种方法是明确提及方法所属的请求类型。这可以通过将属性[HttpGet]
,[HttpPost]
,[HttpDelete]
等添加到该特定方法来完成。因此,在您的情况下,向两个GET方法添加[HttpGet]
,向POSt方法添加[HttpPost]
。我很好奇它是否适用于那种情况。