WPF WebBrowser избежать двойного запроса - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть конечная точка сервера ASP, которая может вернуть страницу в формате pdf или html, и клиент WPF, который вызывает конечную точку.

Исторически мы отправляли запросы к конечной точке, используя WebClient, и еслиответ - это pdf, мы передаем поток байтов ответа нашему средству просмотра PDF, в противном случае мы используем метод элемента управления * WebBrowser *1005* Navigate () для перехода по тому же URL-адресу.(Мы используем отдельное средство просмотра PDF, потому что у нас были проблемы с загрузкой PDF-файлов в WebBrowser.)

Наша проблема в том, что у одного из наших клиентов очень медленная сеть, и они жалуются, что существует два веб-сайта.запрашивает, когда конечная точка возвращает HTML: один для WebClient и один для WebBrowser.Navigate().Я пытаюсь найти способ объединить эти запросы.

Я пытался передать HTML-ответ на WebBrowser, используя WebBrowser.NavigateToString() с добавленным <base href="<urlRoot>" />.Это работает с загрузкой всех относительных URL в документе, но есть конечная точка, использующая библиотеку javascript, которая просто не будет работать таким образом.

Я также попытался использовать WebBrowser для загрузки запросаи затем перехватывает ответ в LoadCompleted, но NavigationEventArgs.WebResponse всегда равен нулю .Это заставило меня попробовать Frame элемент управления, который имел WebResponse, но он вызывал бы сбой приложения каждый раз, когда тип mime не был HTML.

Есть ли способ, которым я могу дать *Ответ 1027 * на WebBrowser, заставляющий WebBrowser действовать так, как если бы он делал запрос?

Есть ли способ использовать WebBrowser для выполнения запроса иперехватить ответ или вытянуть поток байтов PDF из WebBrowser после его загрузки?(Хорошо, если WebBrowser даже загрузит страницу, я просто скрою ее и покажу просмотрщик PDF)

...