#c# #.net #asp.net-mvc #pdf #filestream
Вопрос:
Я пытаюсь встроить средство просмотра PDF для отображения PDF-документа на веб-странице. Когда я запускаю этот код, он обычно показывает мне PDF-файл так, как я хочу, но при обновлении все вылетает (я получаю сообщение «Не удалось загрузить PDF-документ»). Ошибка, которую я на самом деле получаю, — «Исключение ObjectDisposedException: Не удается получить доступ к закрытому потоку»., так что это может быть что-то о чтении потока, я понятия не имею.
Я не знаю путь к документу, поэтому я просто извлекаю поток документа через API (это работает просто отлично), поэтому поток-это единственное, что у меня есть.
Это то, что я делал до сих пор. Что вы предлагаете добавить/изменить?
файл1контроллер.cs:
public class Files1Controller : Controller { private IWebHostEnvironment hostingEnvironment; // Data is in here (I retrieve data from API in another class) private readonly DocumentData documentData; public Files1Controller(IWebHostEnvironment hostingEnvironment, DocumentData documentData) { this.hostingEnvironment = hostingEnvironment; this.documentData = documentData; } [HttpGet] public IActionResult Index() { return View(documentData); } public IActionResult PdfViewerNewTab() { return File(documentData.PdfFileStream, "application/pdf"); } } }
Индекс.cshtml:
@model DocumentData @{ Layout = null; } lt;embed id="embPDF" src="../Files1/PdfViewerNewTab?fileName=@Model.Filename" style="width: 100%; height: 100%;" /gt;
DocumentData:
public class DocumentData { public string Filename { get; set; } = "long_line_file_ORIGINAl.pdf"; public Stream PdfFileStream { get; set; } }
Комментарии:
1. Я могу нормально видеть весь PDF-документ (при первой загрузке, перед обновлением), а не только первую страницу.
Ответ №1:
Извлечение потока файлов через API непосредственно в методе PdfViewerNewTab() решило проблему.