gpt4 book ai didi

c# - Android 手机在 ASP.Net 站点回发后无法打开流式传输的 PDF

转载 作者:太空宇宙 更新时间:2023-11-03 10:54:51 24 4
gpt4 key购买 nike

我有一个 ASP.Net 站点,它在回发到初始页面后流回 PDF 文档。在 IE、Chrome、Firefox 以及 iPhone 和 iPad 上,一切正常,PDF 被发送到浏览器。在 Android 手机上,我收到一条错误消息,指出 PDF 无效。下面的代码是我正在尝试执行的操作的简化版本,但它确实重现了错误。我基本上在网页上有一个按钮,该按钮设置为在服务器上运行。在页面的第一个请求中,它显示 HTML,在单击按钮后,它应该呈现 PDF:

protected void Page_Load(object sender, EventArgs e)
{

Response.ClearHeaders();
Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1
Response.AppendHeader("Expires", "0"); // HTTP 1.1

if (IsPostBack)
{
Response.ClearContent();
Response.ClearHeaders();

string fullPath = @"C:\Temp\outdoc.pdf";

if (System.IO.File.Exists(fullPath))
{

//Set the appropriate ContentType.
Response.ContentType = "application/pdf";
//Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=\"TestDoc.pdf\"");

byte[] b = System.IO.File.ReadAllBytes(fullPath);
this.Page.Response.AddHeader("Content-Length", b.Length.ToString());

//Write the file directly to the HTTP content output stream.
Response.BinaryWrite(b);
Response.Flush();
Response.End();
Response.Close();

}
}


}

我玩过很多不同的 header 值和不同的关闭和刷新响应流的方式,但没有成功。有没有人以前见过这个或者任何人都可以就尝试的事情提出任何建议。

编辑:我发现只有当我对页面进行回发时才会发生这种情况。如果我立即流式传输文档,文档将正确流式传输。这让我相信这是 Android 浏览器的某种缓存问题。谢谢。

最佳答案

尝试将当前请求转移到其他处理程序,您可以在其中直接将 PDF 呈现到响应流。

您的页面代码:

if (IsPostBack)
{
Context.Server.Transfer("RenderPDF.ashx");
Response.End();
}

在那个新的 RenderPDF.ashx 中,将负责呈现 pdf 文件的代码移至此处。

关于c# - Android 手机在 ASP.Net 站点回发后无法打开流式传输的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com