2014-02-20 3 views
0

Я использую обработчик для получения и отображения PDF в окне браузера, используя код ниже:PDF не будет отображаться в окне браузера

byte[] byt = RetrieveDocument(int.Parse(context.Request.Params["id"]), context.Request.Params["title"]); 
string file = WriteDocumentFilePDF(byt); 
HttpContext.Current.Response.ContentType = "application/pdf"; 
HttpContext.Current.Response.AddHeader("content-length", byt.Length.ToString()); 
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=programdetails.pdf"); 
HttpContext.Current.Response.BinaryWrite(byt); 
HttpContext.Current.Response.End(); 

Функция WriteDocumentFilePDF успешно записывает PDF во временном каталоге. У меня приведенный выше код работает правильно в другом приложении. Я что-то упускаю?

ответ

0

Имеет ли значение значение, если вы передаете byte[] на номер memorystream? Так что-то вроде

byte[] byt = RetrieveDocument(int.Parse(context.Request.Params["id"]), context.Request.Params["title"]); 
string file = WriteDocumentFilePDF(byt); 
MemoryStream ms = new MemoryStream(byt); 

а затем добавить заголовки

HttpContext.Current.Response.ContentType = "application/pdf";  
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline; filename=programdetails.pdf"); 
HttpContext.Current.Response.BinaryWrite(ms.ToArray()); 
HttpContext.Current.Response.End(); 
2

При отладке проблем, как это, я считаю, что Скрипач является бесценным инструментом; много раз он спас меня от простых ошибок. Кроме того, этот сайт http://www.c-sharpcorner.com/uploadfile/prathore/what-is-an-ashx-file-handler-or-web-handler/ дает пример того же, но с изображением GIF. Разница между вашим примером и его, по-видимому, заключается в использовании Response.WriteFile(), а не прямой записи в Response с использованием BinaryWrite().

Я бы выполнил Response.ClearHeaders(), прежде чем я установил тип содержимого, и я удалю вызов Response.End().