System. Net .Http.WinHttpException Недостаточно памяти для обработки этой команды - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь получить HTML своих веб-сайтов и внести некоторые изменения в свою базу данных на основе HTML Я запускаю свой код в многопоточном приложении. Он работает нормально, но внезапно выдает ошибку «Недостаточно памяти для обработки этой команды» и через некоторое время снова работает нормально. ниже мой код

public async Task<string> GetHTML(string URL)
    {
        bool binary = false;
        string finalHTML = "";
        bool successResponse = false;
        try
        {
            System.Text.EncodingProvider provider = System.Text.CodePagesEncodingProvider.Instance;
            Encoding.RegisterProvider(provider);
            using (var handler = new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true,
                AllowAutoRedirect = false
            })
            using (var client = new HttpClient(handler))
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                                | SecurityProtocolType.Tls11
                                | SecurityProtocolType.Tls12;
                ServicePointManager.DefaultConnectionLimit = 640000;
                client.Timeout = TimeSpan.FromMilliseconds(30000);
                var sp = ServicePointManager.FindServicePoint(new Uri(URL));
                sp.ConnectionLeaseTimeout = 0;
                using (HttpResponseMessage response = await client.GetAsync(URL, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false))
                {
                    successResponse = response.IsSuccessStatusCode;
                    if (successResponse)
                    {
                        using (HttpContent content = response.Content)
                        {
                            if (binary)
                            {
                            }
                            else
                            {
                                string html = "";
                                using (var sr = new StreamReader(await content.ReadAsStreamAsync(), Encoding.GetEncoding("iso-8859-1")))
                                {
                                    html = sr.ReadToEnd();
                                }
                                finalHTML = html;
                            }
                        }
                    }
                }
                return finalHTML;
            }
        }
        catch (HttpRequestException ex)
        {
            if (ex.InnerException.ToString().ToLower().Contains("not enough storage"))
            {
                //do some work
            }
            if (finalHTML == "")
            {
                //do some work
            }
            return finalHTML;

        }
    }

Я написал его. net Ядро в VS 2017. Любая помощь будет принята с благодарностью.

Спасибо.

...