我正在尝试使用HttpClient使用以下代码将消息异步记录到REST服务:
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。
但我收到一条错误消息,指出“任务已取消。”
有什么想法吗?
答案 0 :(得分:2)
我相信超过超时时会发生这种情况。您可以检查timeout,并在异常之前记录未完成的时间,看是否超出该范围。
答案 1 :(得分:0)
HttpClient在SendAsync完成之前处理。这会导致TaskCanceledException
被抛出。
async
关键字添加到LogMessage
。await
关键字添加到SendAsync
并将其结果设置为var response
。