簡體   English   中英

NavigateToPage掛在ASP.NET應用程序中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM