2012-10-22 319 views
3

我試圖使用HttpClient的使用下面的代碼以異步日誌消息REST服務:HttpClient的任務被取消

public void LogMessage(string operationURI, string message, EventLogEntryType logEntryType) 
     { 
      using (var client = new HttpClient()) 
      { 
       var cancellationToken = new CancellationToken(); 
       client.SendAsync(GetRequest(operationURI), cancellationToken).ContinueWith(
        cw => 
        { 
         var response = cw.Result; //(I get an error on this line) 
         if (!response.IsSuccessStatusCode) 
         { 
          LogMessageLocal(message, logEntryType); 
         } 
        }); 
      } 
     } 

注:GetRequestMessage返回HttpRequestMessage。

但是我收到一個錯誤,指出'任務被取消。'

任何想法?

回答

2

我相信這可以發生在超時超時。您可能會檢查您的timeout,並記錄它在異常發生之前有多久,以查看是否超出。

0

在SendAsync完成之前,HttpClient被放置。這導致TaskCanceledException被拋出。

  1. async關鍵字添加到LogMessage
  2. await關鍵字添加到SendAsync並將其結果設置爲var response
  3. 等待它後,做任何你想做的事情。