2016-09-29 1 views
0

コンソールアプリケーション(Windowsタスクスケジューラによって起動される)からwebapiを呼び出そうとしています。私は、私のコンソールアプリケーションがapiからの結果を待つのを望んでいません。私はapiを呼び出して起動し、コンソールアプリケーションを終了したいだけです。結果を待たずにwebapiを呼び出した後、コンソールアプリケーションを閉じます。

マイコンソールアプリケーションのコードが呼び出されている

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を呼び出した後、コンソールアプリケーションを私を終了しないoutput.Howを待っていました。

WEBAPIコード

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

あなたはこの記事を読むことができますhttp://blog.stephencleary.com/2014/06/fire-and-forget-on-asp-net.html Stephen Clearyから – mybirthname

+0

いい記事ですが、サーバーではなくクライアントです。 –

答えて

0

私はあなたが、応答が受信されたことを確認し、そう

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

へ変更すると確信している:これは、後にドロップします

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

応答ヘッダーが受信されました。これにはエラー処理が含まれていません - 移動する前に適切な応答コードを取得しているかどうかを確認するために、おそらくミックスにエラー処理を追加する必要がありますが、それはあなた次第です。

+0

FYI、私はAPIからの応答をキャッチしたくない...私は単に呼び出して、私のプログラムを終了したい。 – Ein2012

+0

それから外に出て行ってください! –

0

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

レスポンスを待っている「結果」のプロパティ。

関連する問題