c # asp.net использовать Windows Forms WebBrowser - PullRequest
1 голос
/ 15 января 2010

У меня есть класс библиотечного кода, который использует элемент управления System.Windows.Forms.WebBrowser для загрузки веб-страницы, затем извлечения информации из дерева DOM и т. Д. Я обнаружил, что это единственный надежный способ уметь анализировать информацию, загруженную на страницу, с помощью javascript и т. д. ...

Это работало нормально при тестировании с консольным приложением, но когда я вызываю тот же метод со страницы asp.net (контроллер ASP.NET MVC), он вылетает с «элементом управления ActiveX» 8856f961-340a-11d0-a96b-00c04fd705a2 ' не может быть создан, потому что текущий поток не находится в однопоточной квартире. "... я пытался добавить [STAThread] в мой метод, но это, похоже, не помогает!

Есть идеи?

Спасибо

Обновление:

Мне нужно разрешить странице завершить загрузку и выполнить весь ее javascript, а затем найти в нем текст, соответствующий шаблону, который я уже сохранил ... Не думаю, что HtmlAgilityPack будет работать? Ватин запускает JavaScript?

Ответы [ 3 ]

3 голосов
/ 15 января 2010

Избавьте себя от головной боли и используйте WatiN вместо элемента управления WebBrowser.

См. Этот вопрос: Лучший метод для автоматизации веб-сайтов?

0 голосов
/ 15 января 2010

Все в System.Windows предназначено для рабочего стола, а не для веб-приложений. Я согласен с Джейком Пирсоном, что вы должны использовать что-то еще. Но если вы хотите, вы можете попробовать перевести страницу в режим STA, используя эту директиву:

<%@Page AspCompat="true"%>

http://msdn.microsoft.com/en-us/library/zwk9h2kb.aspx

0 голосов
/ 15 января 2010

Я считаю, что невозможно заставить IIS работать в однопотоковой модели квартиры (STA). Вместо использования элемента управления WebBrowser вы можете взглянуть на HTML Agility Pack . Это позволит вам читать на веб-странице и копаться в DOM. Элемент управления WebBrowser использует много компьютерных ресурсов, поэтому вам не придется беспокоиться об этом, чтобы переключиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...