Cześć,
- Moim skromnym daniem, wszędzie używasz
var
, co utrudnia mi czytanie kodu.
- robisz ten sam błąd co ja kiedyś robiłem korzystając z HtmlAgilityPack, a mianowicie powinieneś utworzyć najpierw statyczną instancję
private static HttpClient client;
, i z niej korzystać ładując strony do HtmlAgilityPack tak:
using (HttpResponseMessage response = client.GetAsync(url).Result)
{
using (HttpContent content = response.Content)
{
html = content.ReadAsStringAsync().Result;
}
}
HtmlDocument doc = new HtmlDocument(); //htmlagilitypack
doc.LoadHtml(html);
w Twojej apce to nie będzie zauważalne, ale przy większej ilości połączeń miałem wycieki pamięci i mocno się drapałem w głowę nim wpadłem na to, że to właśnie przez HtmlAgilityPack.
- chyba nigdzie nie masz
Dispose
połączenia...? Patrz wyżej using
.
-
tutaj jest poradnik jak korzystać z HttpClient
- wszystko związane z parsowaniem XPath / Node bym wrzucił do osobnego serwisu
- tak samo zarządzanie połączeniami
- nie obsługujesz też błędów w żadnym endpoincie
- Asp.Net 3.1 Web Api, domyślam się, że chodzi o ASP.NET Core 3.1, a nie ASP.NET MVC 3, też warto uściślać :)
Poza kontrolerem nic więcej nie sprawdzałem.