Невозможно настроить маршрут для Get in WebApi 2 - PullRequest
0 голосов
/ 22 ноября 2018

Я борюсь с чем-то очень простым.Я пытаюсь получить ответ от моего спокойного сервиса WebApi2, и я не могу.

Я не редактировал маршрут WebApi (WebApiConfig.cs) по умолчанию.

Это контроллер

public class AboutController 
{
    [Route("api/about/{id:int}/{service1}/{service2}")]
    public async Task<IHttpActionResult> Get(int accountId, string mainservice, string secondaryservice)
    {
          //logic
    }
}

Если перейти (в браузере) к http://localhost:58090/api/about Я получаю сообщение об ошибке The requested resource does not support http method 'GET'. Полагаю, это имеет смысл, так как он не соответствует маршруту (пути).

Если я обновлю путь до чего-то, совпадающего с подписью, например http://localhost:58090/api/about/1/a/bЯ получаю сообщение об ошибке No action was found on the controller About' that matches the request.

Даже если я добавлю [HttpGet] к controller, это не имеет значения.

В качестве проверки работоспособности я обновился до

public class AboutController 
{
    public async Task<IHttpActionResult> Get()
    {
          //logic
    }
}

, и он выполняет то, что ожидается.Я заблудился относительно того, почему добавление параметров так запутало вещи.

Я заблудился относительно того, что я сделал неправильно

1 Ответ

0 голосов
/ 22 ноября 2018

Маршрут должен соответствовать параметрам

   [Route("api/about/{id:int}/{service1}/{service2}")]
   public async Task<IHttpActionResult> Get(int id, string mainService, string secondaryService)
    {

Выше не будет работать, потому что он ожидает увидеть service1 и service2 на основе маршрута.

Обновление в соответствии с примеромниже

   [Route("api/about/{id:int}/{service1}/{service2}")]
   public async Task<IHttpActionResult> Get(int id, string service1, string service2)
    {
...