Использование HtmlPage.Window.Navigate в Silverlight Windows открывается, а затем сразу закрывается в IE - PullRequest
2 голосов
/ 13 января 2011

Вот код, который я использую:

System.Windows.Browser.HtmlPopupWindowOptions pop = new System.Windows.Browser.HtmlPopupWindowOptions();
pop.Directories = false;
pop.Menubar = false;
pop.Status = false;
pop.Toolbar = false;
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(@"http://" + App.Host + App.VirtualDirectory+ "/Print.aspx?ID=" + ID, UriKind.Absolute), "_blank", "location=no, toolbar=no, status=no");

Что происходит только в производственной среде (работает локально и в тестовой среде), окно отображается, а затем сразу же закрывается. Опять же, это нормально работает локально в моей среде разработки, а затем во внутренней среде тестирования.

Вызываемая страница создает динамический PDF для отображения на экране. Вот код, который модифицирует объект ответа:

context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.AddHeader("Content-Disposition", "attachment;filename=print.pdf");

Затем записывает фактический объект PDF в выходной поток.

Если я открою URL в новой вкладке в IE, я смогу просмотреть документ так, как задумано, только через кнопку печати в Silverlight и только в IE. Я пробовал это в Chrome, и он работает нормально, не тестировал Firefox.

Блокировщик всплывающих окон не задействован, окно отображается, а затем исчезает. Я проверил настройки безопасности и добавил домен в список доверенных сайтов. Ищу любые другие предложения.

1 Ответ

0 голосов
/ 16 февраля 2011

Я отвечаю на свой вопрос, потому что нашел подходящий обходной путь.

Я заменил строку

context.Response.AddHeader("Content-Disposition", "attachment;filename=print.pdf");

на

context.Response.ContentType = "application/pdf";

Поэтому вместо того, чтобы предоставить пользователю диалог открытия / сохранения, он открывается прямо в браузере, если у него естьпредопределенный просмотрщик PDF.Затем они могут распечатать или сохранить файл из Internet Explorer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...