Когда я работаю над WebRequest внутри задач под Mono, я обнаружил, что очень медленно получать ответ от сервера.Но это очень быстро, если отправка запроса из задачи.Я провел какое-то исследование, но для этого нет решения.Код хорошо работает в Windows и .NET Core в Linux.Так что я думаю, что это может быть проблемой на Моно.Надеюсь, кто-то может помочь мне выйти из этого.
public static void Main(string[] args)
{
ServicePointManager.DefaultConnectionLimit = 12;
ServicePointManager.Expect100Continue = false;
var tasks = Enumerable.Range(0, 10).Select(async _ =>
{
var timer = Stopwatch.StartNew();
await ValidateUrlAsync("https://www.bing.com");
timer.Stop();
Console.WriteLine(timer.ElapsedMilliseconds);
//request.Abort();
}).ToArray();
Task.WaitAll(tasks);
// Single request
{
var timer = Stopwatch.StartNew();
ValidateUrlAsync("https://www.bing.com").ConfigureAwait(false).GetAwaiter().GetResult();
timer.Stop();
Console.WriteLine(timer.ElapsedMilliseconds);
}
Console.Read();
}
public static async Task<bool> ValidateUrlAsync(string url)
{
using(var response = (HttpWebResponse)await WebRequest.Create(url).GetResponseAsync())
return response.StatusCode == HttpStatusCode.OK;
}
Версия Mono: 5.16.0.179.Ubuntu: 16.04.2 LTS.