Skip to main content
 首页 » 编程设计

c#之asp.net 网站中的 webbrowser 类

2024年01月13日51java哥

我有一个需求,需要转到一个网页并截取它。

为此我必须创建一个 ASP.NET 以便用户可以输入网站 URL..

我试图创建一个 Web 浏览器控件..但后来意识到我无法在 asp.net 网站中创建 Web 浏览器控件..

我正在尝试做这样的事情 http://pietschsoft.com/post/2008/07/C-Generate-WebPage-Thumbmail-Screenshot-Image.aspx有人可以帮助我如何开始这个吗,因为我知道我们只能在 Windows 窗体中使用 Web 浏览器组件,而不能在网站上使用。

我不确定我的问题是否太愚蠢了,我错过了什么..有人可以帮助我吗

PS:如果我的问题不清楚,请告诉我。我会尝试更具体一些!

请您参考如下方法:

我们需要添加带有线程的 webbrowser,否则我们会得到 ActiveX 控件 '8856f961-340a-11d0-a96b-00c04fd705a2' 无法实例化,因为当前线程不在单线程单元中。错误

这是我们可以让 webbrowser 在 asp.net 网页中工作的方式

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Threading; 
using System.Windows.Forms; 
 
/// <summary> 
/// Summary description for CustomBrowser 
/// </summary> 
public class CustomBrowser 
{ 
    public CustomBrowser() 
    { 
        // 
        // TODO: Add constructor logic here 
        // 
    } 
 
    protected string _url; 
    string html = ""; 
    public string GetWebpage(string url) 
    { 
        _url = url; 
        // WebBrowser is an ActiveX control that must be run in a 
        // single-threaded apartment so create a thread to create the 
        // control and generate the thumbnail 
        Thread thread = new Thread(new ThreadStart(GetWebPageWorker)); 
        thread.SetApartmentState(ApartmentState.STA); 
        thread.Start(); 
        thread.Join(); 
        string s = html; 
        return s; 
    } 
 
    protected void GetWebPageWorker() 
    { 
        using (WebBrowser browser = new WebBrowser()) 
        { 
            //  browser.ClientSize = new Size(_width, _height); 
            browser.ScrollBarsEnabled = false; 
            browser.ScriptErrorsSuppressed = true; 
            browser.Navigate(_url); 
 
            // Wait for control to load page 
            while (browser.ReadyState != WebBrowserReadyState.Complete) 
                Application.DoEvents(); 
 
            html = browser.DocumentText; 
 
        } 
    } 
 
} 

在网页中

CustomBrowser browser = new CustomBrowser(); 
string s = browser.GetWebpage("http://localhost:8781/WebSite3/Default3.aspx"); 
Response.Write(s);