我想指向我的行动,基本上我有1个控制器有不同的方法,我想指向不同的方法,一切运作良好,当我有1个方法称为创建,现在我有一个叫createDocument
(从现在开始忽略最佳实践REST)。所以每次我需要指向createDocument
它都会失败,我得到这个(邮差)。多个动作被发现匹配请求C#
{
"Message": "An error has occurred.",
"ExceptionMessage": "Multiple actions were found that match the request: \r\nCreate on type server.Controllers.DocumentController\r\nCreateDocument on type server.Controllers.DocumentController",
"ExceptionType": "System.InvalidOperationException",
"StackTrace": " at System.Web.Http.Controllers.ApiControllerActionSelector.ActionSelectorCacheItem.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.Controllers.ApiControllerActionSelector.SelectAction(HttpControllerContext controllerContext)\r\n at System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)\r\n at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
}
我只是有这个在我的控制器:
public async Task<IHttpActionResult> CreateDocument([FromBody]List<DocumentDetails> details)
{
return Ok(200);
}
它不进入我试图调试它的控制器,我有很好的作品进入没有问题的另一种方法。
public async Task<IHttpActionResult> Create([FromBody]AppDocument document)
{
我的路由配置是这样的:
namespace server
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
}
}
}
我怀疑它是与我收到的参数,我收到jsonArray这样的:
[
{
"key": "Table",
"rows": 1,
"cols": 1,
"cells": 1
},
{
"key": "Paragraph",
"text": "asda",
"fontSize": 14
},
{
"key": "Paragraph",
"text": "asda",
"fontSize": 14
},
{
"key": "Paragraph",
"text": "asda",
"fontSize": 14
}
]
并为此我创建了2个模型,第一个有一个简单的列表
namespace server.Models
{
public class DocumentDetails
{
public int Id { get; set; }
public List<DocumentAtributes> atributes { set; get; }
}
}
具有列表元素
namespace server.Models
{
public class DocumentAtributes
{
public int Id { get; set; }
public String key { get; set; }
public String rows { get; set; }
public String cols { get; set; }
public String cells { get; set; }
public String fontSize { get; set; }
public String width { get; set; }
public String height { get; set; }
public String base64 { get; set; }
public String align { get; set; }
public String text { get; set; }
}
}
您显示的路线错误。如果这是web api,那么我们需要看到'WebApiConfig',它默认使用'api/{controller}/{id}'路径模板 – Nkosi
您可能需要将'config.MapHttpAttributeRoutes();'添加到'WebApiConfig'中,但是如果我们能看到你的'WebApiConfig'会更好。 – Alisson