9
votes

Contrôle WebBrowser dans une application Web

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

     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
        }


1 commentaires

Bien que vous ayez demandé une solution, mais en pensant que ... Une façon de réaliser la même chose pour créer un contrôle ActiveX qui ferait le travail d'écran et l'ajoutez à votre application ASP.NET ...


5 Réponses :


0
votes

Vous pouvez définir ASPCompat = "true" dans la directive de la page de la page et il fonctionnera dans une STA. Après avoir fait que votre premier exemple devrait fonctionner


0 commentaires

6
votes

Vérifiez cet article de codeProject Utilisation du contrôle WebBrowser dans ASP.NET . < / p>

Dans cet article, allez à la section Spécifications techniques et vous pouvez voir comment il a géré ce problème de thread de STA.

Tout d'abord, un contrôle WebBrowser a être dans un filetage réglé sur un seul thread Mode appartement (STA) (voir MSDN ) , donc je besoin de créer un fil et d'appeler le Méthode de se redémoint () pour la définir à Appartstate.sta avant de commencer ça.

J'espère que cela aide

encourager


1 commentaires

Comment il a géré ce problème de thread de STA? Je ne vois pas cette réponse aussi utile. Pouvez-vous s'il vous plaît élaborer comment il manipulait cette question, je ne peux pas le voir. Ce n'est pas une bonne explication à un lien poing uniquement à une autre page ...



0
votes

Wininet n'est pas pris en charge pour une utilisation dans Services , ce qui signifie toute application utilisant Wininet, tels que le contrôle WebBrowser de IE, n'est pas pris en charge dans les services (par exemple, ASP.NET Services).


0 commentaires

0
votes

Pourquoi utilisez-vous le contrôle WebBrowser dans une application ASP.NET?
On dirait que vous voulez avoir un navigateur à l'intérieur d'un navigateur.

Utiliser, vous limitez le public à utiliser IE (Windows, je suppose).

Vous ne pouvez pas utiliser iframe ou ajax ou une autre alternative?
Publier vos raisons et les gens pourraient suggérer une meilleure alternative.


2 commentaires

Demander "pourquoi?" est contre-productif dans ce cas. Donnez une réponse ou suggère un moyen d'accomplir la tâche: "... essayant de convertir une fenêtre Fenêtre en application WebApplication qui prend une capture d'écran d'une page Web fournie une URL."


Pourquoi? Parce que je veux imprimer une page HTML à une imprimante et que vous êtes censé utiliser un WebBrowser.



0
votes

J'essayais également d'utiliser le contrôle WebBrowser dans ma page .NET. Trouvé cet article qui répond exactement à votre question.

Capture Capture Screenshot (Snapshot) Image de site Web (Web Page) dans asp.net à l'aide de c # et vb.net


0 commentaires