Ошибка загрузки документов с помощью Swagger в WebApi с помощью .Net - PullRequest
0 голосов
/ 31 мая 2019

У меня проблемы с Swagger , когда контроллер в моем WebApi возвращает документ.

Я использую библиотеку Xceed.Word.Net для создания файла docx вMemoryStream.

MemoryStream ms = new MemoryStream();
var doc = Xceed.Words.NET.DocX.Create(ms, DocumentTypes.Document);
...
doc.Save();

После того, как сгенерирован ответ WebApi, сумма выглядит следующим образом:

var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(ms.ToArray()) };
result.Content.Headers.ContentLength = ms.Length;

result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/force-download");
result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
{
    FileName = filename,
    Size = ms.Length,
    CreationDate = DateTimeOffset.Now
};
return result;

Затем я делаю запрос к моему API из браузера (операция GET) и возвращает документ без проблем, но если запрос сделан с помощью Swagger (у меня последняя версия), нажав на ссылку, которая появляется для загрузки и сохранения документа, я не могу открыть его, потому что он говорит, что он поврежден.

Я сравнил документ, который генерируется обоими способами, и проблема заключается в кодировке, когда он сохраняется;Я не знаю, как Swagger это делает или какую кодировку он использует, но контент плохо закодирован, и Word выдает ошибку, говоря, что она повреждена.

У кого-нибудь еще есть такая же проблема?Знаете ли вы, можно ли решить эту проблему путем включения чего-либо в ответ WebApi?

Надеюсь, ваш ответ.

...