当我在Mono下的任务中处理WebRequest时,我发现从服务器获取响应非常慢。但是如果发送请求出去任务非常快。我做了一些研究,但没有解决方案。该代码在Windows和Linux上的.NET Core上均能正常运行。所以我想这可能是Mono的问题。希望有人可以帮助我。
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。