[英]NavigateToPage hangs in ASP.NET application
我正在使用ScrapySharp編寫一個Web爬蟲,該爬蟲需要使用模擬的瀏覽器來登錄和訪問數據。 帶有NavigateToPage調用的方法在控制台應用程序中有效,但在我的ASP.Net應用程序中無效。 無論是否使用https,是否使用默認cookie解析器,都不會進行NavigateToPage調用,包括嘗試導航到Google。
public static ScrapingBrowser GetESEBrowser()
{
ScrapingBrowser browser = new ScrapingBrowser();
browser.UseDefaultCookiesParser = false;
WebPage ESE = browser.NavigateToPage(new Uri("http://www.ese-co.com/storefrontCommerce/login.do"));
PageWebForm login_form = ESE.FindForm("loginForm");
login_form["usr_name"] = "blahblah";
login_form["usr_password"] = "blahblah";
login_form.Submit();
return browser;
}
似乎在HttpRequest.GetResponseAsync中出現了死鎖,在ScrapingBrowser.cs:272中被調用。 它似乎與此處描述的問題有關: https : //blog.stephencleary.com/2012/07/dont-block-on-async-code.html
嘗試這樣的異步任務來替換您的GetESEBrowser():
public static async Task<ScrapingBrowser> GetESEBrowser()
{
ScrapingBrowser browser = new ScrapingBrowser();
WebPage ESE = await browser.NavigateToPageAsync(new Uri("https://www.test.com"));
//...
return browser;
}
您可以通過以下方式調用任務
GetESEBrowser().ConfigureAwait(false);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.