Элемент управления WebBrowser в веб-приложении
Я попытался использовать элемент управления WebBrowser в приложении ASP .NET:
public BrowserForm()
{
webBrowser1 = new WebBrowser();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
private void webBrowser1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
// code here
}
но есть ошибки:
'8856f961-340a-11d0-a96b-00c04fd705a2' невозможно создать экземпляр, потому что текущий поток не находится в однопотоковое
затем я сделал что-то вроде этого:
public BrowserForm()
{
ThreadStart ts = new ThreadStart(StartThread);
var t = new Thread(ts);
t.SetApartmentState(ApartmentState.STA);
t.Start();
}
[STAThread]
public void StartThread()
{
webBrowser1 = new WebBrowser();
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
[STAThread]
private void webBrowser1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
{
//code here
}
но все равно это не работает для меня, как хотелось бы...давая мне weired ошибки, такие как:
ошибка HRESULT E_FAIL имеет были возвращены от вызова компонента COM
любой обойти?? Я не эксперт по потокам или COM, но пытаюсь преобразовать WindowApplication в WebApplication, который делает снимок экрана веб-страницы с URL-адресом. :(
5 ответов
проверьте эту статью codeproject использование элемента управления WebBrowser в ASP.NET.
в этой статье перейдите в раздел технические характеристики, и там вы можете увидеть, как он справился с этой проблемой потока STA.
прежде всего, элемент управления WebBrowser имеет быть в потоке, установленном в один поток режим квартиры (STA) (см. MSDN), поэтому я необходимо создать поток и вызвать SetApartmentState () метод для его установки к Apartmentstate используется.STA перед началом он.
надеюсь, что это помогает
Ура
вы можете установить AspCompat= "true" в директиве страницы страницы, и она будет работать в STA. После того, как вы сделали это, ваш первый пример должен работать
WinInet не поддерживается для использования в службах, что означает, что любое приложение, использующее WinInet, например элемент управления WebBrowser IE, не поддерживается в службах (например asp.net услуги).
Почему вы используете элемент управления webbrowser в asp.net на основе приложения?
Похоже, вы хотите иметь браузер внутри браузера.
используя его, вы ограничиваете аудиторию для использования IE (и Windows, я полагаю).
не можете ли вы использовать IFrame или Ajax или какую-либо другую альтернативу?
Разместить свои причины и люди могут предложить лучшую альтернативу.
Я также пытался использовать элемент управления WebBrowser на моей странице .Net. Нашел эту статью, которая точно отвечает на ваш вопрос.
захват экрана (снимок) изображения на сайте (веб-странице) в ASP.Net с помощью C# и VB.Net