Задача: чтобы иметь возможность отобразить PDF, когда пользователь щелкает ссылку (которая является службой WCF {пример: http://localhost:6186/MyReportServices.svc/reports/012}). Служба отправляет и получает отчет с сервера SSRS и возвращает поток. кусок кода, который находится в.
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class AssistReportServices : IAssistReportServices
{
public Stream GetReport(int value)
{
//skipped some lines of code.
try
{
result = rs.Render(format, devInfo, out extension, out encoding, out mimeType, out warnings, out streamIDs);
execInfo = rs.GetExecutionInfo();
}
catch (SoapException err)
{
throw;
}
MemoryStream ms = new MemoryStream();
ms.Write(result, 0, result.Length);
ms.Position = 0;
//WebOperationContext.Current.OutgoingResponse.ContentType = ConfigurationManager.AppSettings["ResponseType"];
WebOperationContext.Current.OutgoingResponse.ContentType = "application/pdf";
return ms;
}
}
Мой контракт на эксплуатацию выглядит так:
[OperationContract(Action = "*")]
[WebInvoke(Method = "POST",
UriTemplate = "reports/{value}")]
Stream GetReport(int value);
Пока все хорошо. Но вот проблема ... Когда я нажимаю на ссылку выше, я получаю следующую ошибку в диалоговом окне с заголовком Adobe Reader и сообщением:
Файл не начинается с «% PDF -».
Изображение ошибки: http://i.imgur.com/A4J68.png
Я могу сохранить поток памяти в файл и вручную открыть PDF, и он открывается без проблем.
Спасибо.