HTMLAgilityPack e timeout sul carico

.net c# html-agility-pack vb.net

Domanda

Sto usando HTMLAgilityPack in un parser che ho su un server, ma sto riscontrando problemi con uno dei siti web che sto analizzando: Ogni giorno intorno alle 6:00 tendono a chiudere i loro server per la manutenzione, che si stacca il metodo Load () per HTMLWeb e fa crollare la mia app. Qualcuno di voi ha un modo più sicuro di caricare un sito Web in HTMLAgilityPack, o forse un modo per eseguire il controllo degli errori in C # per evitare che la mia app si arresti? (il mio c # è un po 'arrugginito). Ecco il mio codice adesso:

HtmlWeb webGet = new HtmlWeb();
HtmlDocument document = webGet.Load(dealsiteLink); //The Load() method here stalls the program because it takes 1 or 2 minutes before it realizes the website is down

Grazie!

Risposta popolare

Basta circondare la chiamata con un try-catch:

HtmlWeb webGet = new HtmlWeb();

HtmlDocument document;
try
{
    document = webGet.Load(dealsiteLink); 
}
catch (WebException ex)
{
    // Logic to retry (maybe in 10 minutes) goes here
}

L'esatta logica di ripetizione dipenderà dal modo in cui è strutturata la tua applicazione - probabilmente troverai che il blocco try-catch deve essere posizionato più in alto nella tua applicazione deve andare molto più in alto di così.

Penso che WebException sia l'eccezione che dovresti prendere, ma non posso essere sicuro perché non riesco a trovare la documentazione. Potresti scoprire che devi anche prendere TimeoutException .




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché