2010-02-24 5 views
9

Ich habe versucht, das WebBrowser Steuerelement in einer ASP .NET-Anwendung zu verwenden:WebBrowser-Steuerelement in einer Web-Anwendung

public BrowserForm() 
     { 
      webBrowser1 = new WebBrowser(); 
      webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
     } 
private void webBrowser1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
    // code here 
    } 

aber bekam Fehler:

'8856f961-340a-11d0-a96b-00c04fd705a2' cannot be instantiated because the current thread is not in a single-threaded apartment

Dann habe ich so etwas wie dieses:

Aber immer noch funktioniert es nicht für mich wie gewünscht ... gibt mir weired Fehler wie:

Error HRESULT E_FAIL has been returned from a call to a COM component

Alle Arbeiten um ?? Ich bin kein Experte für Threading oder COM, sondern versuche, eine WindowApplication in WebApplication zu konvertieren, die einen Screenshot einer Webseite mit einer URL erstellt. :(

+0

Obwohl Sie nach einer Lösung gefragt, aber nur daran denke ... eine Möglichkeit, das gleiche zu erreichen, ein ActiveX-Steuerelement zu erstellen, die den Bildschirm-shot Job tun würde, und fügen Sie es Ihrer ASP.NET app ... –

Antwort

6

prüfen diese Codeproject Artikel getan haben.

gehen

In diesem Artikel zu den Spezifikationen Abschnitt technischen, und dort kann man sehen, wie er dieses STA-Thread Problem behandelt.

First of all, a WebBrowser control has to be in a thread set to single thread apartment (STA) mode (see MSDN), so I need to create a thread and call the SetApartmentState() method to set it to ApartmentState.STA before starting it.

hoffte, das hilft

+1

Wie er dieses Problem mit STA-Threads behandelt hat? Ich sehe diese Antwort nicht als nützlich. Können Sie bitte erläutern, wie er dieses Problem gehandhabt hat? Ich kann es nicht sehen. Es ist keine gute Erklärung, nur auf eine andere Seite zu verweisen ... –

0

Sie können AspCompat gesetzt = „true“ in der Seitendirektive Seite und es wird in einem STA ausgeführt werden. Nachdem Sie, dass Ihr erstes Beispiel funktionieren sollte Using the WebBrowser Control in ASP.NET

0

Warum verwenden Sie das Webbrowser-Steuerelement in einer asp.net-basierten Anwendung?
Es sieht so aus, als ob Sie einen Browser in einem Browser haben möchten.

Mit ihr begrenzen Sie die Zielgruppe IE (und Windows, nehme ich an).

Können Sie nicht IFrame oder Ajax oder eine andere Alternative verwenden?
Veröffentlichen Sie Ihre Gründe & Leute könnten vorschlagen, eine bessere Alternative.

+0

Fragen "Warum?" ist in diesem Fall kontraproduktiv. Geben Sie entweder eine Antwort oder schlagen Sie einen Weg vor, um die Aufgabe zu erfüllen: "... versuchen, eine WindowApplication in WebApplication zu konvertieren, die einen Screenshot einer Webseite mit einer URL erstellt." – Dror

+0

Warum? Weil ich eine HTML-Seite auf einen Drucker drucken möchte und einen WebBrowser verwenden soll. –

Verwandte Themen