Response.Write("<script language=\"javascript\">window.open(with https and pdf
我们做一个Asp.Net 1.1.4332应用什么是以下几点:PDF错误错误以https
按钮会触发做了一些处理,并把数据在服务器事件下面的代码执行后会话对象:
string page = Request.ApplicationPath + "/ApkRapportPage.aspx";
Response.Write("<script language=\"javascript\">window.open('" + page + "','_new');</script>");
这将打开流的PDF到新的浏览器窗口
用下面的代码基本上是一个页面(我知道的东西是缺少^ h但是这并不是真正的问题)
byte [] pdfbytes = Convert.FromBase64String(rapportB64);
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = GetContentType(format);
string header = GetContentDispostionHeader(fileName, format, type);
Response.AddHeader("Content-Disposition", header);
Response.BinaryWrite(pdfbytes);
Response.End();
好的这段代码有效!
只是没有在IE6和IE7使用HTTPS时
当使用IE6使用HTTPS它导致与HTTPS 当使用IE7一个另存为对话框(在浏览器中打开不是一个PDF格式)它导致一个空白屏幕 当使用Firefox时,它工作得很好
如果我在page_load中模拟额外的服务器端处理,将所需的数据放入会话中,并用一个打开相同pdf生成页面的链接替换按钮在新窗口中,代码有效。
对于实际的应用程序,它不是一个在点击按钮之前获取所需数据的选项。
所以我真的想获得以下代码工作
string page = Request.ApplicationPath + "/ApkRapportPage.aspx";
Response.Write("<script language=\"javascript\">window.open('" + page + "','_new');</script>");
问题: 有谁知道为什么这个代码不会在IE6和IE7工作使用HTTPS时? 需要什么才能使代码正常工作?
额外的信息:
- 我试着不使用的Response.Write但 只是一个JavaScript window.open后面 按钮,这有相同的效果 google搜索PDF流时
- ,你可以找到很多人遇到这种问题有 ,主要是他们在IIS中设置了 标题长度或其他属性或 静态文件压缩标志。 我很有信心,我尝试了所有 。
- Adobe Acrobat Reader设置,浏览器设置或任何其他客户端 侧面设置似乎不是 问题。测试不同的 机器,用http工程,用https: 它没有。
- 在https和http之间切换可能与此有关,但是当我设置IE告诉我我在切换时 时,在测试过程中似乎没有发生切换 。
- 当一个Response.Redirect的替换window.open部分则代码也工作,只是不是在一个新窗口
任何帮助将不胜感激!
按照要求的报头,如图小提琴手:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.1
Date: Thu, 05 Mar 2009 14:18:36 GMT
X-Powered-By: ASP.NET
X-AspNet-Version: 1.1.4322
Content-Disposition: Inline;filename=APKrapport.pdf
Cache-Control: private
Content-Type: application/pdf; charset=utf-8
Content-Length: 28307
是的,谢谢你的努力。但我尝试了所有这一切。 – KeesDijk 2009-03-05 14:01:48