В настоящее время у нас есть настройки данных, такие как:
Task
-> Incident
-> ....
-> ....
Довольно много объектов являются производными от базового класса Task. Мы создали API для управления этими объектами, но у нас также есть некоторые общие функциональные возможности, которые я пытался поместить в базовый контроллер API, чтобы каждый отдельный объект API наследовал.
Like So
TaskController
-> IncidentController
-> ....
-> ....
Это работает по большей части. Однако у меня есть проблема со следующим.
Внутри Incident Controller
У меня есть Get
Метод:
[RoutePrefix("Api/Incident")]
public class IncidentController : TaskController
{
//Get an individual incident by ID
[HttpGet]
[Route("{id}")]
public GenericIncidentGet Get(string id)
{
.....
}
}
Этот метод отлично работает. У меня тогда есть метод на родительском контроллере
public class TaskController : ApiController
{
[HttpGet]
[Route("{number}")]
public ListResponse<TaskCiResultFlat> GetAffectedCIs(string number)
{
......
}
}
Когда я вызываю вышеуказанный метод через / Api / Incident / GetActedCIs? Number = XXXX, он фактически вызывает метод Incident Get()
, но с параметром null id
.
В настоящее время я регистрирую эти маршруты WebApi:
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
"ActionIdApi", "api/{controller}/{action}/{id}/{id2}/{id3}/{id4}/{id5}/{id6}", new { id = RouteParameter.Optional, id2 = RouteParameter.Optional, id3 = RouteParameter.Optional, id4 = RouteParameter.Optional, id5 = RouteParameter.Optional, id6 = RouteParameter.Optional });
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
Я не могу понять, что здесь происходит.
Есть предложения?
Приветствие.