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

标签 c# asp.net webbrowser-control

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

为此我必须创建一个 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);

关于c# - asp.net 网站中的 webbrowser 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688281/

相关文章:

c# - WebBrowser 控件外部脚本不起作用

c# - 下拉列表中的国家/地区和城市列表

c# - ASP.NET session 删除事件

c# - 如何使用 WinForms 中的 Web 浏览器控件访问 HTML 文档的 <HEAD> 元素?

c# - 如何使我的主代码/表单等待另一个类的函数在 C# 中完成,而不发生任何卡住?

c# - Youtube全屏在WinForms webBrowser中不起作用

c# - 命名代表 iCal 对象的类

c# - VSTO:电子邮件编辑器插件 - 获取当前光标位置

c# - 未找到具有不变名称 'System.Data.SqlClient' 的 ADO.NET 提供程序的 Entity Framework 提供程序。

c# - 尝试从数据库 GridView 特定用户进行更新 (OleDbCommand)