Web应用程序中的WebBrowser控件

Man*_*ish 9 .net c# asp.net webbrowser-control

我试图在ASP .NET应用程序中使用WebBrowser控件:

public BrowserForm()
        {
            webBrowser1 = new WebBrowser();
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
        }
private void webBrowser1_DocumentCompleted(Object sender, WebBrowserDocumentCompletedEventArgs e)
    {
   // code here
    }
Run Code Online (Sandbox Code Playgroud)

但得到错误:

'8856f961-340a-11d0-a96b-00c04fd705a2'无法实例化,因为当前线程不在单线程单元中

然后我做了这样的事情:

     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
        }
Run Code Online (Sandbox Code Playgroud)

但仍然没有按照我的意愿为我工作......给我一些错误的错误:

错误HRESULT E_FAIL已从调用COM组件返回

任何工作?我不是线程或COM的专家,但是尝试将WindowApplication转换为WebApplication,它使用网页的屏幕截图提供了一个URL.:(

Ram*_*Vel 6

检查此代码项目文章在ASP.NET中使用WebBrowser控件.

在那篇文章中,转到技术规范部分,在那里你可以看到他是如何处理这个STA线程问题的.

首先,WebBrowser控件必须在一个线程中设置为单线程单元(STA)模式(参见MSDN),所以我需要创建一个线程并调用SetApartmentState()方法在开始之前将其设置为ApartmentState.STA它.

希望这可以帮助

欢呼