从ASP.NET 3.5网站向IE推出PDF文件

从ASP.NET 3.5网站向IE推出PDF文件,asp.net,internet-explorer,.net-3.5,pdf,Asp.net,Internet Explorer,.net 3.5,Pdf,我的应用程序将PDF文件推出到弹出窗口(例如,无菜单/工具栏)浏览器窗口(响应用户单击按钮)。这适用于除IE7之外的所有浏览器。在IE7中,我得到的只是一个空白窗口 以下是推出PDF的服务器端代码: private void StreamPDFReport(string ReportPath, HttpContext context) { context.Response.Buffer = false; context.Response.Clear(); context.

我的应用程序将PDF文件推出到弹出窗口(例如,无菜单/工具栏)浏览器窗口(响应用户单击按钮)。这适用于除IE7之外的所有浏览器。在IE7中,我得到的只是一个空白窗口

以下是推出PDF的服务器端代码:

private void StreamPDFReport(string ReportPath, HttpContext context)
{
    context.Response.Buffer = false;
    context.Response.Clear();
    context.Response.ClearContent();
    context.Response.ClearHeaders();        

    // Set the appropriate ContentType.
    context.Response.ContentType = "application/pdf";
    context.Response.AddHeader("Content-Disposition", "inline; filename=Report.pdf");
    context.Response.Cache.SetCacheability(HttpCacheability.NoCache);        

    // Write the file directly to the HTTP content output stream.
    context.Response.WriteFile(ReportPath);
    HttpContext.Current.ApplicationInstance.CompleteRequest();
    //context.Response.End();
}
在客户端,当用户按下按钮时,onClick处理程序中会发生以下情况:

onclick=“window.open('RptHandler.ashx?RptType=CaseInfo','Report','top=10,left=10,width=1000,height=750')


我是否缺少一些真正基本的东西?为什么它在每个浏览器中都能工作,但在IE中却不能工作?

在IE7中,我们发现您需要为发送的PDF大小添加一个额外的标题“内容长度”。例如:


Response.AddHeader(“content length”,即{size of the pdf});

以下语句导致IE不显示pdf:

context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 

不确定原因。

看起来像是
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
仅在使用IIS7时有效


我将它改为
context.Response.AddHeader(“缓存控制”,“无缓存”);
并且它似乎与IE7和IE8一起工作。

你说的是真的,但不是真的。