我使用以下代码将pdf从.ashx文件流式传输到浏览器:
context.Response.Clear();
context.Response.Charset = "";
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("Content-Disposition", "inline;filename=test.pdf");
context.Response.AddHeader("content-length", stream.Length.ToString());
stream.WriteTo(context.Response.OutputStream);
context.Response.Flush();
context.Response.End();
上下文来自:
public void ProcessRequest(HttpContext context)
使用Chrome或Firefox时,一切正常,并且会在浏览器中显示。但是当我使用IE 11时,我得到一个空白屏幕。如果我转到Adobe Reader->编辑 - >偏好 - >互联网并取消选中"在浏览器中显示PDF"然后从IE打开Adobe Reader并正确显示PDF。但是一旦我取消选中"在浏览器中显示PDF"然后它只显示空白屏幕:
如果我去IE"管理附加组件"它显示Adobe已启用:
我已经看过其他帖子,但似乎没有任何效果。我认为它是IE浏览器和Firefox工作的东西,如果我没有在浏览器上加载IE浏览器,那就是IE显示器。
关于可能导致这种情况的任何想法?
更新:Fiddler数据:
这是我从Fiddler那里得到的。 Chrome和IE之间没有什么突出的,除了IE不起作用:
铬: 请求:
GET /FileDownloadHandler.ashx?session=agenda_item_number_download&id=6079&downloadtoken=635685165181990000 HTTP / 1.1 主持人:localhost 连接:保持活力 接受:text / html,application / xhtml + xml,application / xml; q = 0.9,image / webp, / ; q = 0.8 User-Agent:Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,类似Gecko)Chrome / 43.0.2357.81 Safari / 537.36 推荐人:http://localhost/FileDownload.aspx?session=agenda_item_number_download&id=6079 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en; q = 0.8,es; q = 0.6,ru; q = 0.4 Cookie:ASP.NET_SessionId = n3r0p3lgrnsherwl0iid3ser
响应:
HTTP / 1.1 200好的 缓存控制:私有 内容长度:150173 内容类型:application / pdf 服务器:Microsoft-IIS / 8.0 Content-Disposition:inline; filename = test.pdf X-AspNet-Version:4.0.30319 Set-Cookie:DownloadSessionToken = 635685165181990000;路径= / X-SourceFiles:=?UTF-8?B?QzpcUHJvamVjdHNcTUNXZWJBcHBsaWNhdGlvbnNcU291cmNlXE1vaGF2ZUNvdW50eVxGaWxlRG93bmxvYWRIYW5kbGVyLmFzaHg =?= X-Powered-By:ASP.NET 日期:2015年5月29日星期五17:15:19 GMT
IE:
请求:
GET /FileDownloadHandler.ashx?session=agenda_item_number_download&id=6079&downloadtoken=635685164869660000 HTTP / 1.1 接受:text / html,application / xhtml + xml, / 推荐人:http://localhost/FileDownload.aspx?session=agenda_item_number_download&id=6079 接受语言:en-US User-Agent:像Gecko一样的Mozilla / 5.0(Windows NT 6.1; WOW64; Trident / 7.0; rv:11.0) Accept-Encoding:gzip,deflate 连接:保持活力 DNT:1 主持人:localhost Pragma:没有缓存 Cookie:ASP.NET_SessionId = 1ekxziruzsstknjubyugl3ur
响应:
HTTP / 1.1 200好的 缓存控制:私有 内容长度:150173 内容类型:application / pdf 服务器:Microsoft-IIS / 8.0 Content-Disposition:inline; filename = test.pdf X-AspNet-Version:4.0.30319 Set-Cookie:DownloadSessionToken = 635685164869660000;路径= / X-SourceFiles:=?UTF-8?B?QzpcUHJvamVjdHNcTUNXZWJBcHBsaWNhdGlvbnNcU291cmNlXE1vaGF2ZUNvdW50eVxGaWxlRG93bmxvYWRIYW5kbGVyLmFzaHg =?= X-Powered-By:ASP.NET 日期:2015年5月29日星期五17:14:47 GMT
修正更新
好吧,好像它是一个Adobe Reader问题。我发现了这个问题,因为最终我的流会产生103:103的错误。在做了一些搜索之后,我发现了它要执行以下操作的地方:
启动Adobe Reader 在" Adobe偏好"打开菜单" General" 取消(取消选中)设置"启动时启用保护模式" 如果没有做任何事情,请卸载软件,运行adobe清洁工具,然后重新安装软件。
现在它正常工作。如果有人想要使用它,我会加入CC Tool。
答案 0 :(得分:0)
我在原帖中发了答案。似乎这个问题是一个Adobe Reader错误。