2013-04-16 6 views
0

У меня есть служба WCF-REST, которая возвращает данные в формате JSON, который читает из базы данных в SQLSERVER ... Для возврата простых данных у меня нет любая проблема.
Как вернуть PDF/двоичные данные из базы данных в WCF

Теперь я хочу вернуть файл PDF, который находится в базе данных в поле varbinary (max).
Каков правильный способ возврата данных PDF в службу WCF Rest Service?

[EDITED] Вот как это было предложено. Это класс:

[WebGet(UriTemplate = "/documents/{id}")] 
    public ActionResult GetDocument(int id) 
    { 
     using (var context = new CorrespondenceDataContext()) 
     { 
      var item = context.DocumentsPDFs.Find(id); 
      return File(item.Document, "application/pdf", "Document-" + id); 
     } 
    } 

Сейчас я уже сделал это так же, как предложение, но я предполагаю, что это не совместимо с моим проектом (я немного нового на этом) ...
Первую ошибку : Тип или имя пространства имен «ActionResult» не удалось найти
Вторая ошибка: System.Data.Linq.Table не содержит определения для Find
Третья ошибка: System.IO.File является типом, но используется как переменная

Я попытался добавить System.Web.MVC, но он не появляется. Мой проект - приложение службы WCF ...

+0

Это может очень помочь, если вы действительно включили сообщение об исключении и трассировку стека. Также я НЕ предлагал, что у вас есть. Я предлагал вам использовать ТОЧНЫЙ код, который я вам дал. НЕ завершайте свой двоичный файл в некоторой оболочке base64/JSON/XML. Короче говоря, правильным способом является НЕ использовать API WCF Web (REST) ​​для этого. – Aron

+0

я тоже. Я возвращаю свои данные в формате JSON, потому что у меня есть другое приложение, клиентское приложение для чтения этих данных в этом формате ... – user1600801

+0

А ... Хорошо, я предположил, что у вас есть MVC 4 WebApi Controller с резервным хранилищем EF. Похоже, вы используете LinqToSQL с каким-то самостоятельным классом. Мне нужно знать, что наследует класс, содержащий GetDocument, и какой метод вы используете для «регистрации» его в WPAService. – Aron

ответ

0
[WebGet(UriTemplate = "/documents/{id}")] 
    public ActionResult GetDocument(int id) 
    { 
     using(var context = new CorrespondenceDataContext()) 
     { 
      var item = context.DocumentsPDFs.Find(id); 
      return File(item.Document, "application/pdf", "Document-" + id); 
     } 
    } 
+0

Ваш ответ был бы лучше, если бы вы четко указали, как он относится к вопросу - ваши методы и переменные не соответствуют этому вопросу. –

+0

Таким образом, я могу получить данные в формате PDF правильно? Я попробую, и я надеюсь, что это сработает со мной ... Спасибо – user1600801

+0

Я уже реализовал таким образом, но получаю ошибки. Смотрите мое обновление, пожалуйста .. – user1600801

Смежные вопросы