Получение PDF из WCF в WCF - PullRequest
1 голос
/ 12 мая 2011

Хорошо, вот что у меня есть ...

На одном сервере WCF, размещенный в IIS. Это обрабатывает кучу вещей для приложения ASP.NET, которое находится на том же сервере (в основном, вызовы БД). В приложении ASP есть встроенный iFrame, который содержит просмотрщик документов PDF.

На другом сервере - WCF, размещенный в службе Windows. Он обрабатывает вызовы из первого WCF и запускает стороннюю программу обработки документов, которая генерирует файлы PDF. На данный момент у меня есть фиктивный PDF-файл, который можно использовать на диске C: \.

Моя миссия: чтобы каким-то образом иметь функцию в WCF # 2, вернуть копию документа PDF в WCF # 1, которая сохранит ее в локальном каталоге приложения ASP, чтобы встроенный просмотрщик мог отображать это пользователю.

До сих пор я пытался заставить WCF # 2 вернуть объект FileStream, но безуспешно. Я полагаю, что это большое нет-нет в мире WCF (я нуб).

Я понятия не имею, как этого добиться, большинство моих усилий оказываются тщетными. Как бы вы справились с этим? Кто-нибудь? * * 1013

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 мая 2011

Пусть WCF2 возьмет PDF и вернет его в виде байтового массива:

   // fs is your FileStream
   byte[] Data = new byte[fs.Length];
   fs.Read(Data,0,fs.Length);

WCF1 вызывает WCF2 и читает байтовый массив, затем сохраняет его на диск

FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(buff);
bw.Close(); 
0 голосов
/ 12 мая 2011

Спасибо, Джейсон - я сделал нечто подобное.Мысль, которую я отправлю для следующего парня:

WCF # 2:

Public Function GetPDF_Byte() As Byte() Implements IService1.GetPDF_Byte
    Dim fs As New FileStream("C:\211LD.pdf", FileMode.Open, FileAccess.Read)

    Dim ImageData As Byte() = New Byte(fs.Length - 1) {}

    fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length))

    fs.Close()

    GetPDF_Byte = ImageData
End Function

И, WCF # 1, который вызывает # 2 и записывает файл на диск:

Sub Main
    Dim WCF As New ServiceReference1.Service1Client
    Dim ByteData As Byte()
    Dim oFileStream As System.IO.FileStream

    ByteData = WCF.GetPDF_Byte
    oFileStream = New System.IO.FileStream("C:\NewPDF.pdf", FileMode.Create)
    oFileStream.Write(ByteData, 0, ByteData.Length)
    oFileStream.Close()
End Sub

Надеюсь, что может помочь кому-то еще!

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