Я пытаюсь получить 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. Любая помощь будет принята с благодарностью.
Спасибо.