web api route错误 - 找到了多个操作

时间:2013-07-10 01:20:34

标签: asp.net-web-api routes

我知道有很多这些问题,但我似乎无法弄清楚为什么我在调用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 }
            );

1 个答案:

答案 0 :(得分:2)

我已经抛出一个快速项目来测试你的配置,即使我非常确定你已经正确实现了它。一切都在我的项目中工作,我可以POST到控制器并获得正确的响应等。

您确定要正确发送请求吗?因为http://<host>:<port>/api/<controller>应该是您发送POST的地址。 URI中不需要执行其他操作,因为只有一个POST方法。框架应该掌握方法并自动使用该方法。显然,只有在实际存在两个或更多POST方法时才会出现“多个动作”错误。

您可以尝试的最后一种方法是明确提及方法所属的请求类型。这可以通过将属性[HttpGet][HttpPost][HttpDelete]等添加到该特定方法来完成。因此,在您的情况下,向两个GET方法添加[HttpGet],向POSt方法添加[HttpPost]。我很好奇它是否适用于那种情况。