Asp.net中的System.Windows.Forms.WebBrowser WebForm DocumentCompleted未被触发

时间:2010-10-01 15:36:48

标签: asp.net browser webbrowser-control

是的,有些人会说“你疯狂使用asp表格中的winforms控件”......我认为他们是对的。但我会说......“我不是唯一一个!!,看一看”

http://www.eggheadcafe.com/tutorials/aspnet/b7cce396-e2b3-42d7-9571-cdc4eb38f3c1/build-a-selfcaching-asp.aspx

因此...

做一些类似上一个链接的东西。我做了以下事情:

使用System; 使用System.Threading; 使用System.Windows.Forms;

命名空间XXXX.aspx.Print {     public partial class Drucker:System.Web.UI.Page     {         private ManualResetEvent mre = new ManualResetEvent(false);

    protected void Page_Load(object sender, EventArgs e)
    {
        Threading();
    }

    private void Threading()
    {
        Thread t = new Thread(new ThreadStart(GoAhead));
        t.SetApartmentState(ApartmentState.STA);
        t.Start();
        mre.WaitOne();
        t.Abort();
    }

    private void GoAhead()
    {
        DateTime time = DateTime.Now;
        WebBrowser webBrowser = new WebBrowser();

        webBrowser.Navigate(Request.UrlReferrer.ToString());
        webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);

        while (true)
        {
            Thread.Sleep(0);
            TimeSpan elapsedTime = DateTime.Now - time;
            if (elapsedTime.Seconds >= 13)
            {
                mre.Set();
            }
            System.Windows.Forms.Application.DoEvents();
        }
    }

    void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        WebBrowser webBrowser = (WebBrowser)sender;
        if (e.Url.AbsolutePath != webBrowser.Url.AbsolutePath) return;

        webBrowser.Print();
    }
}

}

现在...

没有触发DocumentCompleted事件(也没有ProgressChanged),我尝试了下一个事件:

  1. 将库MsHtml.dll添加到我的项目中并将文件放入我的lib文件夹中......我做到了......没有变化。
  2. 尝试处理WebBrowser.ReadyState的状态...我做到了......没有更改(实际上在收到WebBrowserReadyState.Complete之后我试图打印文档 webBrowser.Print();但我收到一个奇怪的IE弹出窗口告诉我:“'dialogArguments .__ IE_PrintType'是Null或者不是对象'”...好吧所以我做了一些研究:关于dcomcnfg和一些com安全设置的微软主题 我做到了......没有变化。 ...
  3. 顺便说一句,我在64位工作,Win7 ...... 所以在我格式化整台电脑之前...... 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

WebBrowser永远不会被它没有的ActiveX容器激活。首先尝试将它放在表格上。

顺便说一下,你知道你是in the unsupported territory when you use WinInet, the network layer of webbrowser control, in a Windows Service,对吧?