C# 当ScrapySharp导航到页面时,继续卡住加载

C# 当ScrapySharp导航到页面时,继续卡住加载,c#,asp.net,webforms,scrapysharp,C#,Asp.net,Webforms,Scrapysharp,当使用scrapysharp浏览网页时,我的浏览器一直在加载,不会转到下一行代码。下面是我使用c#asp.net web表单的代码。我可以知道为什么吗?我使用的链接正在工作,可以手动浏览。代码只是停留在Browser.NavigateToPage(新Uri(“http://www.asnb.com.my/v3_/asnbv2_0index.php"));并继续在浏览器中加载。我正在使用asp.NETWebForm ScrapingBrowser Browser = new ScrapingBro

当使用scrapysharp浏览网页时,我的浏览器一直在加载,不会转到下一行代码。下面是我使用c#asp.net web表单的代码。我可以知道为什么吗?我使用的链接正在工作,可以手动浏览。代码只是停留在
Browser.NavigateToPage(新Uri(“http://www.asnb.com.my/v3_/asnbv2_0index.php"));并继续在浏览器中加载。我正在使用asp.NETWebForm

ScrapingBrowser Browser = new ScrapingBrowser();
Browser.AllowAutoRedirect = true; 
Browser.AllowMetaRedirect = true;

WebPage PageResult = Browser.NavigateToPage(new Uri("http://www.asnb.com.my/v3_/asnbv2_0index.php"));
HtmlNode TitleNode = PageResult.Html.CssSelect(".navbar-brand").First();

我遇到了同样的问题,决定不使用
Browser.NavigateToPage
,而是使用
HtmlDocument
获取
PageResult.Html

例如:

HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("http://www.asnb.com.my/v3_/asnbv2_0index.php");
HtmlNode TitleNode = doc.DocumentNode.CssSelect(".navbar-brand").First();

这将使您获得预期的结果。

将呼叫转移到backgroundworker线程。请注意,在ScrapingBrowser.cs(ScrapySharp/ScrapySharp/Network/ScrapingBrowser.cs)的第353行中,对NavigateToPage()的调用调用异步版本:

public WebPage NavigateToPage(Uri url, HttpVerb verb = HttpVerb.Get, string data = "", string contentType = null)
{
  return NavigateToPageAsync(url, verb, data, contentType).Result;
}

我也遇到了同样的问题,当我在我的BGW线程中将调用移动到我的DoWork方法时,它就开始以您期望的方式运行。

另一种方法是使用NavigatePage的异步版本,例如:

private async Task<WebPage> LoadPage(Uri uri)
{
    WebPage page = await browser.NavigateToPageAsync(uri);
    return page;
}
专用异步任务加载页(Uri)
{
网页页面=等待浏览器。NavigateToPageAsync(uri);
返回页面;
}

这太奇怪了。。。我有一些使用ScrapySharp的老项目,它们仍然运行良好。导航页面上没有挂起/卡住。但我在一个新的MVC项目中尝试了ScrapySharp(具有相同的目标框架和版本),它在NavigateToPage上卡住了。。。无论如何,HtmlAgilityPack在新项目中运行良好-@NickG。我以前也曾在将代码从控制台项目移动到WPF项目时挂起代码。修复了我将一段工作代码从控制台应用程序移动到WPF应用程序,并且使用
NavigateToPage
的调用停止工作。这个解决方案解决了这个问题。