asp.net – 生成PDF,IE和HTTPS错误
我在ASP.NET 2.0中将PDF流式传输到浏览器.这可以在所有浏览器中通过HTTP和除IE之外的所有浏览器通过HTTPS进行.据我所知,这在IE的所有版本中曾经工作过(过去5年左右),但是我们的客户最近才开始报告问题.我怀疑默认情况下,不要将加密的页面保存到磁盘安全性选项,这些选项将被禁用,并且在某些时候,默认情况下会启用(Internet选项 – >高级 – >安全性).关闭此选项有助于作为一种解决方案,但不能作为长期解决方案.
我收到的错误信息是:
用于创建PDF的工具是从DataDynamics开始的ActiveReports.一旦创建了PDF,以下是将其发送的代码: Response.ClearContent() Response.ClearHeaders() Response.AddHeader("cache-control","max-age=1") Response.ContentType = "application/pdf" Response.AddHeader("content-disposition","attachment; filename=statement.pdf") Response.AddHeader("content-length",mem_stream.Length.ToString) Response.BinaryWrite(mem_stream.ToArray()) Response.Flush() Response.End() 注意:如果我没有明确指定缓存控制,那么.NET会代我发送无缓存,所以我已经尝试将cache-control设置为private或public或maxage =#,但这些都不行. 这是扭曲的:当我运行Fiddler检查响应标题时,一切都正常.我收到的标题是:
一旦我关闭了Fiddler,再试一次,它再次失败.我注意到的另一件事是,当Fiddler正在运行时,我得到一个本网站的安全证书警告消息有问题,我必须点击继续访问本网站(不推荐)才能通过.当Fiddler关闭时,我不会遇到此安全警告,并且立即失败. 我很好奇Fiddler和浏览器之间发生了什么,所以当Fiddler正在运行时,它可以工作,但是当它没有运行时就会中断,但更重要的是,有没有人有任何想法,我可以如何更改我的代码,因此将PDF转换为IE将无需更改到客户机? 更新:Fiddler问题得到解决,非常感谢EricLaw,所以现在它的行为一贯(破碎,有或没有Fiddler运行). 基于Google搜索,似乎有很多关于这个同样问题的报告遍布网络,每个都有自己的特定组合的响应标题,似乎可以解决个别情况的问题.我尝试过许多建议,包括添加ETag,LastModified日期,删除Vary标题(使用Fiddler)和数十种Cache-Control和/或Pragma头文件的组合.我尝试“Content-Transfer-Encoding:binary”以及ContentType的“application / force-download”.迄今为止没有任何帮助.有一个few Microsoft KB articles,所有这些都表示Cache-Control:无缓存是罪魁祸首.任何其他想法? 更新:顺便说一下,为了完整,Excel和Word输出也会出现同样的问题. 更新:没有进展.我通过电子邮件将.ZZZ文件从Fiddler发送到EricLaw,并且在调试IE时能够重现问题,但还没有解决方案.赏金会过期… 解决方法
您的缓存控制标题不正确.它应该是Cache-Control:max-age = 1,中间有破折号.尝试先修复它,看看它是否有所作为.
通常,我会说,最可能的罪魁祸首是你的Vary标头,因为这样的标题通常会导致IE:http://blogs.msdn.com/ieinternals/archive/2009/06/17/9769915.aspx中的缓存问题.您可能想尝试向响应头添加一个ETAG. Fiddler应该对可缓存性没有影响(除非你已经写了规则),而且听起来像你说的那样,这表明也许有某种时间问题. >默认情况下,不要将加密的页面保存到用于禁用的磁盘安全选项 默认情况下,此选项仍然禁用(在IE6,7和8中),尽管IT管理员可以通过组策略来启用该选项,而一些主要公司也是这样做的. 顺便说一下,运行Fiddler时看到证书错误的原因是您没有选择信任Fiddler根证书;有关此主题的更多信息,请参阅http://www.fiddler2.com/fiddler/help/httpsdecryption.asp. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 找不到连接名称’ApplicationServerWorkflowIns
- Razor 页面简化了 ASP.NET MVC 应用程序
- asp.net – 通过http将数据从服务器推送到浏览器
- 使用ASP.Net会员提供商忘记密码?
- 使用ActiveDirectory授权与ASP.NET身份
- ASP.NET Core 2.2 JWT AUTH
- 禁用ASP.Net ReportViewer控件上的分页
- asp.net-mvc – 为什么我的动作方法不会超时?
- asp.net-mvc-3 – 在远程部署MVC3时获取“CS0103:当前上下
- asp.net-web-api – System.Web.Http.WebHost中的GlobalCon