Contrôle WebBrowser dans une application web

J'ai essayé d'utiliser le contrôle WebBrowser dans un ASP .NET application:

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

Mais a reçu l'erreur:

'8856f961-340a-11d0-a96b-00c04fd705a2'
ne peut pas être instanciée parce que le
thread actuel n'est pas dans un
single-threaded apartment

Alors j'ai fait quelque chose comme ceci:

     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
        }

Mais encore il ne fonctionne pas pour moi en tant désiré...de me donner weired erreurs comme:

Erreur HRESULT E_FAIL a été renvoyé
à partir d'un appel à un composant COM

Tout le travail autour?? Je ne suis pas un expert de filetage ou de COM, mais d'essayer de convertir un WindowApplication à WebApplication qui prend une capture d'écran d'une page web a fourni une URL. 🙁

Si vous avez demandé une solution, mais juste une pensée... une manière d'atteindre le même pour créer un contrôle ActiveX qui permettrait de faire la capture d'écran de l'emploi, et l'ajouter à votre ASP.NET app...

OriginalL'auteur Manish | 2010-02-24