Маршрут не найден с пустым 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

Другие вопросы по тегам