Asp.net WebApi返回空白PDF文件
我使用MigraDoc生成PDF,它在本地机器上保存得很好,但当我将此文件流发送到webapi时,浏览器会以空白内容打开它Asp.net WebApi返回空白PDF文件,asp.net,pdf,asp.net-web-api,migradoc,httpresponsemessage,Asp.net,Pdf,Asp.net Web Api,Migradoc,Httpresponsemessage,我使用MigraDoc生成PDF,它在本地机器上保存得很好,但当我将此文件流发送到webapi时,浏览器会以空白内容打开它 var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StreamContent(new MemoryStream(pdfByteArray)) }; response.Content
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中打开developer tools时,我看到一些响应字符如下所示:
虽然当我尝试使用相同的字节流创建本地文件时:
using (Stream stream = File.Create(@"d:\work\Test.pdf"))
{
new MemoryStream(pdfByteArray).CopyTo(stream);
}
它正确显示PDF的内容
我试图在响应内容类型中指定不同的字符集(如UTF-7、UTF-8、windows-1252等),并查看响应字符是否已更改,但结果是相同的-我看到空白PDF。另一个注意事项是,当我发送Json和用Base64编码的pdfByteArray时,在UI上我能够解码并创建正确的PDF。我正在试图找到一种方法来发送应用程序/pdf内容,并让浏览器正确呈现pdf。
pdfByteArray.Length
vsletterStreamArray.Length
?@Nkosi抱歉输入错误,忘了在SOdid中更改它您尝试了不同的浏览器吗?@FalcoAlexander是的,我尝试了Chrome、IE和Safari-相同的结果。也许你知道一些IIS配置?@ShukhratRaimov任何时候浏览器都无法显示它,因为它获取的数据不正确。pdfByteArray.Length
vsletterStreamArray.Length
?@Nkosi抱歉,键入错误,忘记在SOdid中更改它了。你尝试了不同的浏览器吗?@FalcoAlexander是的,我在尝试Chrome,IE和Safari-相同的结果。可能您知道某些IIS配置?@ShukhratRaimov任何时候浏览器都无法显示它,因为它获取的数据不正确。