У меня есть приложение SL3, которое должно смочь передать изображение серверу, и затем сервер генерирует файл PDF с изображением в нем и отобразит его пользователю.
Что я уже имею в распоряжении, следующие:
(1) Код для преобразования изображения в массив байтов (2) Код для генерации файла PDF с изображением
Основная проблема, с которой я сталкиваюсь, следующая:
Для обхода средства блокировки всплывающих окон, которое является требованием для моего приложения, я использую следующий код:
var button = new NavigationButton();
button.NavigateUri = new Uri("http://localhost:3616/PrintReport.aspx?ReportIndex=11&ActionType=Get&ReportIdentifier=" + reportIdentifier.ToString() + "");
button.TargetName = "_blank";
button.PerformClick();
Первоначально, я передал бы изображение веб-сервису WCF (как массив байтов) и затем "перешел" бы к странице ASP.NET, которая отобразит отчет. Однако, если я делаю это, затем я не могу использовать свой пользовательский класс HyperlinkButton, и, определенные браузеры, включая Safari, заблокируют новое окно от открытия. Поэтому кажется, что единственная опция состоит в том, чтобы использовать класс HyperlinkButton.
То, что я должен смочь сделать, должно так или иначе передать изображение, как массив байтов или некоторый другой тип данных, к серверу, такому, что это может временно сохранить изображение, даже если это находится в серверной переменной, и затем сразу получите его, когда я перешел к странице PrintReport.aspx.
Если я загружаю изображение на форму ASP.NET и затем использую класс HyperlinkButton для навигации к странице PrintReport, это не работает, поскольку приложение перешло к странице PrintReport, прежде чем система закончила загружать изображение. Я не могу передать его веб-сервису, поскольку это потребовало бы, чтобы я перешел к странице PrintReport.aspx в коде обратного вызова веб-метода, которому я передал бы изображение, и HyperlinkButton не позволит это, на основе правил безопасности.
Любая справка или идеи ценились бы.
Спасибо.
Chris
Похоже, ваша проблема связана не столько с загрузкой изображения, сколько с использованием только один щелчок, чтобы загрузить и перейти на страницу, на которой отображается отчет, если это так, то обработка загрузки изображения на самой странице отчета может быть подходящим вариантом.
Загрузка файлов с помощью HTTPWebrequest (multipart / form-data)
показывает, как загружать файлы на стандартную страницу aspx
Что касается работы веб-сервиса, я бы сказал, что вам не хватает части головоломки. вот режим совместимости с WCF ASP.
Это позволяет получить доступ к httpcontext в службе wcf. Уловка, конечно же, в том, что вы связываете свою службу с ASP ....
Взгляните здесь http://blogs.msdn.com/wenlong/archive/2006/01/23/516041. aspx для получения дополнительных сведений о режиме совместимости с ASP.
Затем ваш процесс выглядит следующим образом:
Загрузить в веб-службу -> добавить в кеш
Перейти на страницу -> Получить из кеша
надеюсь, что одно из этих предложений поможет
, если нет, вернитесь ко мне!