我在服务器上使用的解析器中使用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
谢谢!
答案 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