Бритва: перейти на новую веб-страницу - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь перейти на другую страницу в бритве C #.Вот мой код.Но просто ничего не происходит.Кажется, что поток вообще не запускается:

@using System.Windows.Forms;
@using System;
@using System.Threading;

@{
    var message = "";

    void runBrowserThread(Uri url)
    {
        var th = new Thread(()=>
        {
            var br = new WebBrowser();
            br.DocumentCompleted += browser_DocumentCompleted;
            Application.Run();
            br.Navigate(url);
        });
        th.SetApartmentState(ApartmentState.STA);
        th.Start();
    }

    void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var br = sender as WebBrowser;
    }

    Uri uri = new Uri("http://www.google.com");
    runBrowserThread(uri);
}



<body>
    <span id="myspan">@message</span>

</body>

1 Ответ

0 голосов
/ 18 октября 2018

Как только вы начнете набирать using System.Windows.Forms в веб-приложении, вы должны знать, что делаете что-то не так.

Элемент управления WebBrowser не имеет места в ASP.NET.Вместо этого вы должны использовать класс HttpClient , чтобы сделать HTTP-запрос к странице, которую вы хотите получить (или "очистить").У него есть метод GetStringAsync , который возвращает ответ (обычно HTML, если запрашиваемый ресурс является веб-страницей).

Если у вас есть HTML, есть несколько способов его проанализировать,Избегайте использования Regex или строковых методов.Для этого используйте пакет типа HtmlAgilityPack или AngleSharp .Они оптимизированы для анализа DOM.

...