WebApi возвращает пустой файл PDF

Я использую MigraDoc для создания PDF, он отлично сохраняется на локальном компьютере, но когда я отправляю этот файловый поток на webapi, браузер открывает его с пустым содержимым.

var response = new HttpResponseMessage(HttpStatusCode.OK)
               {
                   Content = new StreamContent(new MemoryStream(pdfByteArray))
               };
response.Content.Headers.ContentDisposition = 
              new ContentDispositionHeaderValue("attachment")
              {
                   FileName = "MyPdf.pdf"
              };
response.Content.Headers.ContentType = 
              new MediaTypeHeaderValue(@"application/pdf")
response.Content.Headers.ContentLength = pdfByteArray.Length;
return response;

Когда я открываю инструменты разработчика в Chrome, я вижу, что некоторые символы ответа выглядят так: введите здесь описание изображения

Хотя, когда я пытаюсь создать локальный файл, используя тот же поток байтов:

using (Stream stream = File.Create(@"d:\work\Test.pdf"))
{
    new MemoryStream(pdfByteArray).CopyTo(stream);
}

Он правильно отображает содержимое PDF.

Я пытался указать другой CharSet в Response Content-Type (например, UTF-7, UTF-8, windows-1252 и т. д.) и вижу, что символы ответа изменены, но результат тот же - я вижу пустой PDF. Еще одно замечание: когда я отправляю Json с pdfByteArray, закодированным в Base64, в пользовательском интерфейсе я могу декодировать это и создавать правильный PDF. Я пытаюсь найти способ отправить содержимое приложения/pdf и позволить браузеру правильно отображать PDF.


person Shukhrat Raimov    schedule 04.03.2020    source источник
comment
@Nkosi извините, опечатка, забыл изменить это в SO   -  person Shukhrat Raimov    schedule 04.03.2020
comment
вы пробовали разные браузеры?   -  person Falco Alexander    schedule 04.03.2020
comment
@FalcoAlexander да, я пробовал Chrome, IE и Safari - результат тот же. Может быть, есть какая-то конфигурация IIS, о которой вы знаете?   -  person Shukhrat Raimov    schedule 04.03.2020
comment
@ShukhratRaimov Каждый раз, когда браузер не может его отобразить, это связано с тем, что он получает неверные данные.   -  person Nkosi    schedule 04.03.2020
comment
@ShukhratRaimov, можете ли вы проверить используемую платформу. Asp.net Core или веб-API Asp.net 2+   -  person Nkosi    schedule 04.03.2020
comment
вы можете попробовать заголовок Content-Disposition inline вместо attachment?   -  person Falco Alexander    schedule 04.03.2020
comment
@Nkosi Microsoft.AspNet.WebApi.Core 5.2.7. О неверных данных: может быть браузер не может правильно интерпретировать контент потока, который я отправляю?   -  person Shukhrat Raimov    schedule 04.03.2020
comment
Хорошо, тогда проблема в том, что Core сериализует созданный вами HttpResponseMessage. Не делай этого.   -  person Nkosi    schedule 04.03.2020
comment
@ShukhratRaimov проверьте stackoverflow.com/a/36043779/5233410   -  person Nkosi    schedule 04.03.2020
comment
@ShukhratRaimov обновите сообщение со всем методом действия, чтобы было больше контекста в коде.   -  person Nkosi    schedule 04.03.2020