【发布时间】:2017-10-26 12:08:45
【问题描述】:
我已经阅读了一些 SO posts,但没有一篇能完全涵盖我的情况,所以我将在这里发布。
给定以下路由配置注册:
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 调用?
标签: c# asp.net-web-api