当WebApi中的控制器返回文档时, Swagger 出现问题。
我正在使用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响应中包含某些内容来解决该问题?
我希望你的回答。