0

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

1 回答 1

2

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

您确定您正在正确发送请求吗?因为http://<host>:<port>/api/<controller>应该是您发送 POST 的地址。URI 中不需要额外的操作,因为只有一种 POST 方法。框架应该选择该方法并自动使用该方法。显然,只有当实际有两个或多个 POST 方法时才会发生“多个操作”错误。

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

于 2013-07-11T07:30:55.310 回答