2009-04-09 88 views
2

我一直在试图让这个aspx页面提供PDF。它工作正常在Firefox,但是IE给人Asp.Net发送PDF到浏览器

Internet Explorer无法从SERVER_NAME
下载getform.aspx的Internet Explorer无法打开此Internet站点。请求的网站不可用或无法找到。

这是我的代码的一般功能。它跨越多个职能分散(这就是为什么我们不使用WriteFile的 - 有时候我们动态生成的PDF),但这通常是:

FileStream fs = File.Open(Path.Combine(PdfBasePath, "form.pdf"), FileMode.Open, FileAccess.Read); 
Stream output = Response.OutputStream; 

byte[] buffer = new byte[BUFFER_SIZE]; 
int read_count = fs.Read(buffer, 0, BUFFER_SIZE); 
while (read_count > 0) 
{ 
    output.Write(buffer, 0, read_count); 
    read_count = fs.Read(buffer, 0, BUFFER_SIZE); 
} 

fs.Close(); 

Response.Clear(); 
Response.ContentType = System.Net.Mime.MediaTypeNames.Application.Pdf; 
Response.AddHeader("Content-Disposition", "attachment; filename=form.pdf"); 
Response.Output.Flush(); 
Response.End(); 

望着提琴手,页面使用这个正在取出:

GET /getform.aspx?Failure=Y & R = someencryptedstring HTTP/1.1

它被返回,从而浏览器:

HTTP/1.1 200 OK
日期:周四,2009年04月09日22时08分33秒GMT
服务器:Microsoft-IIS/6.0
X供电,通过:ASP.NET
X-AspNet-版本:2.0.50727
Pragma:no-cache
Content-Disposition:attachment;文件名= form.pdf
缓存控制:无缓存,没有店内
附注:无缓存
到期日:-1
内容类型:应用/ PDF
的Content-Length:628548

这真是让我烦恼。我没有使用SSL,否则this KB article似乎适用。有人有主意吗?

+0

你有没有尝试从多个客户端连接,也许不同版本的IE? – 2009-04-09 23:00:51

+0

是的。我们有两台服务器用于测试:本地服务器和生产级服务器。我已经测试过IE6,IE7,Firefox和Safari。除了IE之外,所有的工作都很花哨。那些只是吓坏了。这与其他机器也是如此。 – Amy 2009-04-09 23:09:57

回答

1

在标题中返回的Content-Length对于您发送的文件实际上是否正确?我只是将它与我​​们在此使用的一些生产代码进行比较,看起来像我们明确设置了Content-Length标头。如果我没有记错,如果标题和实际文件大小不匹配,则某些浏览器会出现问题。

编辑 问题笔者发现,改变内容处置头应用程序/下载,而不是应用程序/ PDF似乎解决该问题。