Показать PDF на веб-странице с помощью потока C#

#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() решило проблему.