У меня проблема с получением URL-адресов для правильного разрешения моих контроллеров путем получения идентификатора из URL-адреса, а не параметра строки запроса. У меня есть. net проект webapi, настроенный со следующей структурой папок.
Root
Controllers
v1
Partner
CompaniesController
PersonController
QuoteController
Так что, как вы можете видеть, CompaniesController находится в папке Partner, а остальные контроллеры - в папке v1. Я также использую RoutePrefix на моем CompaniesController, например ...
[EnableCors("*", "*", "*")]
[RoutePrefix("api/v1/partner/companies")]
public class CompaniesController : BaseApiController{
[Route("contact")]
[HttpPost]
public IHttpActionResult Contact(string id)
{
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что следующий URL возвращает 404.
https://localhost:44322/api/v1/partner/companies/contact/9da093ef-57a5-4da0-bd0e-5ac97cf304e2
Но следующий URL-адрес работает нормально и вызывает метод find
https://localhost:44322/api/v1/partner/companies/contact?id=9da093ef-57a5-4da0-bd0e-5ac97cf304e2
Я подумал, что это может быть мой файл routeconfig, поэтому я добавил его к нему, но все равно не работает, как ожидалось.
routes.MapRoute(
name: "Partner",
url: "api/v1/partner/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Есть идеи, что мне нужно изменить, чтобы это работало с идентификатором как частью URL, а не параметром строки запроса?