我读过几个SO posts,它们都没有覆盖我的场景,因此我要在此处发帖。找到了与请求匹配的多个操作:WebAPI 2
给出下面的航线配置报名:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
,并从ApiController继承的控制器,这些控制器操作:
public GetDocumentsResponse Post([FromBody]GetDocumentsRequest request)
{
}
public FinishDocumentsResponse Post([FromBody] FinishDocumentsRequest request)
{
}
public class GetDocumentsRequest
{
public string CorrelationId { get; set; }
public int Id { get; set; }
public string ObjectId { get; set; }
public string BusinessArea { get; set; }
public string UserId { get; set; }
public string SystemName { get; set; }
public string SystemToken { get; set; }
public Letter LetterDetails { get; set; }
public List<KeyValuePair<string, string>> KeyValue { get; set; }
}
public class FinishDocumentsRequest
{
public string CorrelationId { get; set; }
public string[] Documents { get; set; }
}
我以为做这种方式就足以消除歧义的IHttpActionSelector正确选择路线,但不幸的是它不是。
所以我的问题是“有没有办法使这段代码正常工作,并保持在同一控制器?
谢谢 斯蒂芬
您是否打算为两者进行相同的URL调用? – Nkosi