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
Vous devez vous connecter pour publier un commentaire.
Cochez cette codeproject article Utiliser le Contrôle WebBrowser dans ASP.NET.
Dans cet article, allez à la section "Caractéristiques", et là vous pouvez voir comment il a traité ce thread STA question.
Espère que cette aide
Encourager
OriginalL'auteur RameshVel
Vous pouvez définir AspCompat="true" dans la page de la directive de page et il sera exécuté dans un STA. Après que vous avez fait votre premier exemple devrait fonctionner
OriginalL'auteur Martin Booth
WinInet n'est pas pris en charge pour l'utilisation de services, ce qui signifie que toute application qui utilise WinInet, tels que IE du contrôle webbrowser, n'est pas pris en charge dans les services (par ex. asp.net les services).
OriginalL'auteur Sheng Jiang 蒋晟
Pourquoi êtes-vous d'utiliser le contrôle webbrowser dans un asp.net en fonction de l'application?
Il semble que vous souhaitez avoir un navigateur à l'intérieur d'un navigateur.
L'utilisant, vous êtes en limitant le public à utiliser IE (et Windows, je suppose).
Ne pouvez-vous pas utiliser d'IFrame ou Ajax ou une autre alternative?
Publier vos raisons & les gens pourraient suggérer une meilleure alternative.
Pourquoi? Parce que je veux imprimer une page HTML à une imprimante et que vous êtes supposé utiliser un WebBrowser.
OriginalL'auteur shahkalpesh
J'ai essayé d'utiliser le contrôle WebBrowser dans mon .Net page. Trouvé cet article qui répond à votre question.
Prendre des captures d'écran (Snapshot) de l'Image de Site internet (Web Page) ASP.Net à l'aide de C# et VB.Net
OriginalL'auteur DotNetUser