HttpClient не отправляет запрос в Web Api async get метод - PullRequest
0 голосов
/ 03 января 2019

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

У меня есть асинхронный метод get в контроллере Web Api:

public class SomeController : ApiController  
{  
   [HttpGet]  
   public async Task<IHttpActionResult> MyMethodAsync(Guid id)  
   {  
      //... doing something.
   }  
}

В моем клиентском приложении я пытаюсь назвать его так:

using(var client = new HttpClient())
{
   var result = client.GetAsync($"{url}/Some/MyMethodAsync/{Guid.NewGuid()}"); 
   //I have tried making the above call with and without await
   //since I saw in some other post that it is not needed.

   //.... doing something else.

   //This POST method does stop in the beak point I set inside of it.
   var result2 = client.PostAsync($"{url}/Some/MyPostAsync", someContent);
}

Проблема, с которой я столкнулся, заключается в том, что кажется, что запрос даже не отправляется в Web Api с точки останова, котораяЯ установил на MyMethodAsync предупреждение о том, что символы не загружаются.

Что меня действительно смущает, так это то, что следующий вызов - это метод POST на том же контроллере, который, когда я вызываю его, загружает символы иТочка останова получает удар.

Как я уже сказал, я возвращаюсь в Web Api через очень долгое время, и некоторые вещи в моей голове размыты.У меня есть только маршрут по умолчанию, поэтому я не знаю, нужно ли мне добавлять более конкретные маршруты, и если да, то как их указать.

В качестве примечания у меня есть два других метода GET, которые также имеют Guidпараметр.Я пытался дозвониться до тех, у кого тот же результат.

Спасибо за вашу помощь.

ОБНОВЛЕНИЕ : Чтобы все было более запутанно.Если я запускаю приложение, но вместо того, чтобы использовать клиент, я открываю браузер и вписываю URL в точности так, как это сделал бы клиент, то наступает точка останова в действии.Сразу после этого я пытаюсь использовать клиент, а затем он не будет.

1 Ответ

0 голосов
/ 03 января 2019

1.Откройте App_Start / WebApiConfig.cs

enter image description here

2.Добавить новый маршрут

config.Routes.MapHttpRoute(
    name: "NewRoute",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

2.1.ПОЛНЫЙ Код

enter image description here

3.USE Атрибут имени действия [ActionName ("MyMethod1")]

    [ActionName("MyMethod1")]
    [HttpGet]
    public IHttpActionResult MyMethod1(Guid id)
    {
        return Ok<string>($" ok MyMethod1 and id= {id}");

    }

4.То же самое для MyMethod2

    [ActionName("MyMethod2")]
    [HttpGet]
    public IHttpActionResult MyMethod2(Guid id)
    {
        return Ok<string>($" ok MyMethod2 and id= {id}");

    }

Дополнительное примечание: для символов не удаляется ошибка в Visual Studio

  • закрыть Visual Studio
  • Удалить WebApplication1 \ bin
  • Удалить WebApplication1 \ obj
  • Открыть Visual Studio
  • Построить решение
    enter image description here
...