Маршрут не найден с пустым RoutePrefix на контроллере
У меня есть чей-то код здесь, и я не понимаю его прежде всего "пустой" RoutePrefix на контроллере.
Я называю URL в браузере следующим образом:
http://localhost/TestService/TestAccess/FindProducts/de/2/product/5
Я получаю 404 для этого контроллера + действие:
[RoutePrefix("")]
public class TestAccessController : ApiController
{
[Route("{country}/{brandlist}/product/{databaseID:int}")]
[HttpGet]
public async Task<IHttpActionResult> FindProducts(String country, String brandlist, int databaseID)
{
...
}
}
Это настройка маршрута:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(name: "Default", routeTemplate: "{controller}" );
Какой маршрут мне нужно ввести в строке URL браузера, чтобы запустить конечную точку FindProducts без изменения существующего кода?
1 ответ
Решение
Атрибут route является абсолютным - он не принимает имя контроллера, если вы не укажете его в маршруте (или не установите префикс маршрута на уровне контроллера).
Попробуйте изменить маршрут на
[Route("TestAccess/FindProducts/{country}/{brandlist}/product/{databaseID:int}")]
редактировать
Или попробуйте изменить URL-адрес на...
http://localhost/de/2/product/5
или, возможно, http://localhost/TestService/de/2/product/5