c# - HTMLAgilityPack 和加载超时

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

我在服务器上的解析器中使用 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 block 需要放在更高的位置,您的应用程序需要比这高得多.

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

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

相关文章:

c# - 我们什么时候需要使用 [Browsable(true)]?

.net:从Excel工作表动态生成SQL数据库中的表

.net - .NET 中的 .resx 和 .config 文件有什么区别?

c# - 如何更新 xml 文件设置

c# - 将按位与/非从 VB.NET 转换为 C#

c# - 是否有 "String.Format"可以接受命名输入参数而不是索引占位符?

c# - 在 C# 中更改文本框中的插入符(光标)

c# - DateTime 必须包含时区信息并考虑夏令时

sql-server - 从vb.net调用具有已知错误的存储过程的错误处理

vb.net - 如何以与 VB.NET 类似的方式在 VBA 中的类对象模块之间使用比较方法?