2010-01-15 4 views
1

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

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

Любые идеи?

Благодаря

Обновление:

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

ответ

3

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

Смотрите этот вопрос: Best method for Website Automation?

+0

Спасибо работает блестяще! –

0

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

0

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

<%@Page AspCompat="true"%> 

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

Смежные вопросы