C# asp.net网站中的webbrowser类

C# asp.net网站中的webbrowser类,c#,asp.net,webbrowser-control,C#,Asp.net,Webbrowser Control,我有一个要求,需要去一个网页,并采取它的截图 为此,我必须创建一个ASP.NET,以便用户可以输入网站URL 我试图创建一个web浏览器控件。。但后来意识到我无法在asp.net网站中创建web浏览器控件 我正在尝试做一些类似的事情,有人能帮我从这个开始吗?因为我知道我们只能在windows窗体中使用web浏览器组件,而不能在网站上使用 我不确定我的问题是否太傻,我遗漏了什么。。有人能帮我吗 PS:如果我的问题不清楚,请告诉我。。我会尽量说得更具体一些 您可以在ASP.net中使用WebBrow

我有一个要求,需要去一个网页,并采取它的截图

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

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

我正在尝试做一些类似的事情,有人能帮我从这个开始吗?因为我知道我们只能在windows窗体中使用web浏览器组件,而不能在网站上使用

我不确定我的问题是否太傻,我遗漏了什么。。有人能帮我吗


PS:如果我的问题不清楚,请告诉我。。我会尽量说得更具体一些

您可以在ASP.net中使用WebBrowser控件服务器端。只需添加对System.Windows.Forms的引用。

您可能可以使用web处理程序文件(.ashx)而不是.aspx。这将允许您在不使用webform的情况下使用webbrowser控件

我们需要添加带线程的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;

        }
    }

}

请参阅:理论上,您不能简单地从相关DLL中包含控件并在服务器端执行它吗?即使你没有运行客户端应用程序,你仍然应该能够包含所有DLL并执行代码。非常感谢,我只是应用了你的解决方案,它工作得非常好。我正在运行此代码,但无法让Print()执行任何操作。你做了什么?每当我执行此操作时,都会出现一个活动的X线程错误,在修复该错误时,它会“运行”,但Print()根本不会执行任何操作。(也没有例外。)
CustomBrowser browser = new CustomBrowser();
string s = browser.GetWebpage("http://localhost:8781/WebSite3/Default3.aspx");
Response.Write(s);