HTMLAgilityPack和加载超时

时间:2011-05-03 23:17:32

标签: 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

谢谢!

2 个答案:

答案 0 :(得分:3)

用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

答案 1 :(得分:2)

尝试在网站主页上执行WebRequest.GetReponse并捕获WebException,如果您获得WebException可能会给予一些时间并再次尝试,直到您收到回复,一旦得到响应,然后继续使用HtmlAgilityPack的加载方法。< / p>

检查

http://msdn.microsoft.com/en-us/library/system.net.webrequest.getresponse.aspx#Y700