Я пытался использовать элемент управления WebBrowser в приложении ASP .NET:управления WebBrowser в веб-приложении
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' cannot be instantiated because the current thread is not in a single-threaded apartment
Тогда я сделал что-то вроде этого:
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
}
Но все же он не работает для меня по вашему желанию ... давая мне ошибки, такие как:
Error HRESULT E_FAIL has been returned from a call to a COM component
Любая работа вокруг ?? Я не специалист по потоку или COM, но пытаюсь преобразовать WindowApplication в WebApplication, который берет скриншот веб-страницы с URL-адресом. :(
Хотя вы просили решение, но просто думаю ... один из способов достижения того же, чтобы создать элемент управления ActiveX, который будет делать работу скриншоте, и добавить его в приложение ASP.NET ... –