Итак, я играю с Web API (ASP.NET Core 2) и имеет проблемы с маршрутизации.
У меня есть несколько контроллеров, таких как:
SchoolController
TeacherController.
Оба имеют Gets: Get(int id)
Проблема в том, что когда я запускаю ее, я получаю ошибку во время выполнения, даже когда вы действительно вызываете методы.
Attribute routes with the same name 'Get' must have the same template:
Action: MyProject.WebAPI.Controllers.SchoolController.Get (MyProject.WebAPI)' - Template: 'api/school/{id}'
Action: MyProject.WebAPI.Controllers.TeacherController.Get (MyProject.WebAPI)' - Template: 'api/teacher/{id}'
Зачем это делать, когда контроллеры должны иметь свои собственные Gets и т.д., чтобы вы могли:
/api/{controller}/1
etc... ?
Теперь у меня также есть другой метод Get, как в их контроллерах, так и с другой подписью метода, а также с другим именем HttpGet i.e:
// TeachersController:
[Produces("application/json")]
[Route("api/teacher")]
public class TeacherController : Controller
{
// GET: api/Teacher/5
[HttpGet("{id}", Name = "Get")]
public IActionResult Get(int id)
{
// BLAH
}
}
И для школьного контроллера:
[Produces("application/json")]
[Route("api/school")]
public class SchoolController : Controller
{
[HttpGet("{id}", Name = "Get")]
public IActionResult Get(int id)
{
// BLAH
}
[HttpGet("SearchBasic")]
public IActionResult SearchBasic(string schoolName, string zipCode)
{
// BLAH
}
}
Чтобы быть ясным - вопрос:
-
Почему я получаю ошибки во время выполнения сразу после запуска веб-приложения?
-
Получаемые файлы находятся на разных контроллерах, поэтому почему возникли конфликты?