相关疑难解决方法(0)

我怎么知道HttpClient何时超时?

据我所知,没有办法知道它特别是发生了超时.我不是在寻找合适的地方,还是我错过了更大的东西?

string baseAddress = "http://localhost:8080/";
var client = new HttpClient() 
{ 
    BaseAddress = new Uri(baseAddress), 
    Timeout = TimeSpan.FromMilliseconds(1) 
};
try
{
    var s = client.GetAsync("").Result;
}
catch(Exception e)
{
    Console.WriteLine(e.Message);
    Console.WriteLine(e.InnerException.Message);
}
Run Code Online (Sandbox Code Playgroud)

返回:

发生了一个或多个错误.

任务被取消了.

c# timeout dotnet-httpclient

123
推荐指数
6
解决办法
11万
查看次数

OperationCanceledException VS任务取消时的TaskCanceledException

以下代码创建一个正在取消的任务.await表达式(案例1)抛出System.OperationCanceledException同步Wait()(案例2)抛出System.Threading.Tasks.TaskCanceledException(包装System.AggregateException).

using System;
using System.Threading;
using System.Threading.Tasks;

public class Program
{
    public static void Main()
    {
        Program.MainAsync().Wait();
    }

    private static async Task MainAsync()
    {
        using(var cancellationTokenSource = new CancellationTokenSource())
        {
            var token = cancellationTokenSource.Token;
            const int cancelationCheckTimeout = 100;

            var task = Task.Run(
                async () => 
                {
                    for (var i = 0; i < 100; i++)
                    {
                        token.ThrowIfCancellationRequested();
                        Console.Write(".");
                        await Task.Delay(cancelationCheckTimeout);  
                    }
                }, 
                cancellationTokenSource.Token
            );

            var cancelationDelay = 10 * …
Run Code Online (Sandbox Code Playgroud)

.net c# exception task-parallel-library async-await

11
推荐指数
2
解决办法
6831
查看次数