我在服务器上的解析器中使用 HTMLAgilityPack,但我正在解析的网站之一出现问题:每天早上 6 点左右,他们倾向于关闭服务器进行维护,这会导致HTMLWeb 的 Load() 方法,并使我的应用程序崩溃。你们有没有更安全的方法将网站加载到 HTMLAgilityPack 中,或者可能有某种方法在 C# 中进行错误检查以防止我的应用程序崩溃? (我的 c# 有点生疏)。这是我现在的代码:

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

谢谢!

最佳答案

只需用 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
}

确切的重试逻辑将取决于您的应用程序的结构 - 您可能会发现 try-catch 块需要放置在您的应用程序中的更高位置,需要比这高得多。

我认为 WebException 是您应该捕获的异常,但我不能确定,因为我找不到文档。您可能会发现还需要捕获 TimeoutException

关于c# - HTMLAgilityPack 和加载超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5876825/

10-10 23:49