在调用webapi之后关闭控制台应用程序而不等待结果

时间:2016-09-29 15:03:59

标签: c# asp.net rest asp.net-web-api

我试图从控制台应用程序调用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 个答案:

答案 0 :(得分:0)

我确定您要确保收到回复,因此请更改

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

要:

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

收到响应标头后,这将丢弃。这不包括错误处理 - 您应该在混合中添加错误处理以确保在继续之前获得正确的响应代码 - 但这取决于您。

答案 1 :(得分:0)

  

var response = Task.Run(()=>   。client.GetAsync(controllerPath))结果;

使用属性"结果"你在等待回应。