Закройте консольное приложение после вызова webapi, не дожидаясь результата

Я пытаюсь вызвать webapi из консольного приложения (которое запускается планировщиком задач windows). Я не хочу, чтобы мое консольное приложение ждало результата от api.Я просто хочу вызвать api, запустить его и выйти из консольного приложения.

Мой код консольного приложения

public static void InvokeSisService(string feature)
        {
            var serviceurl = ConfigurationManager.AppSettings["AppServiceURL"];
            var controllerPath= ConfigurationManager.AppSettings["ControllerPath"];

            var client = new HttpClient { BaseAddress = new Uri(serviceurl) };

            controllerPath= controllerPath+ "?feature=" + feature;
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));


            //client.PostAsync(smsservicepath, null);
           // var temp=client.GetAsync(smsservicepath).Result;
            var response = Task.Run(() => client.GetAsync(controllerPath)).Result;
}

Мой webapi вызывается, но он ждал вывода.Как выйти из консольного приложения после вызова api.

Код Webapi

  [HttpGet]
    [Route("ProcessService")]
    public HttpResponseMessage ProcessService([FromUri] string feature)
    {
    }

2 ответа

  1. Я уверен, что вы хотите убедиться, что ответ был получен, поэтому измените

      var response = Task.Run(() => client.GetAsync(controllerPath)).Result;
    

    Для:

      using (var response = await client.GetAsync(controllerPath, HttpCompletionOption.ResponseHeadersRead))
    

    Это произойдет после получения заголовков ответа. Это не включает обработку ошибок — вероятно, следует добавить обработку ошибок в микс, чтобы убедиться, что вы получаете правильный код ответа, прежде чем двигаться дальше — но это зависит от вас.