У меня проблемы с 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?
Надеюсь, ваш ответ.