System.Windows.Forms.WebBrowser внутри Asp.net WebForm DocumentCompleted не запущен - PullRequest
1 голос
/ 01 октября 2010

Да, некоторые люди скажут: «Вы с ума сошли, используя элементы управления winforms внутри форм asp» ... и я думаю, что они правы. Но я бы сказал .. "Я не единственный !!, посмотрите"

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

Итак ...

Делать что-то вроде предыдущей ссылки. Я сделал следующее:

с использованием Системы; используя System.Threading; используя System.Windows.Forms;

namespace XXXX.aspx.Print { публичный частичный класс 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 в Microsoft и некоторые настройки безопасности com Я сделал это ... Без изменений. ...

Кстати, я работаю в 64 битах, Win7 ... Итак, прежде чем я отформатирую весь компьютер ... Есть предложения?

1 Ответ

0 голосов
/ 02 октября 2010

WebBrowser никогда не активируется на месте его контейнером ActiveX, которого у вас нет.Попробуйте сначала поместить его в форму.

Кстати, вы знаете, что на неподдерживаемой территории, когда вы используете WinInet, сетевой уровень управления веб-браузером, в службе Windows , верно

...