2009-06-04 275 views
0

在我们的应用程序中,我们经常会有一个按钮,它会执行回发,获取数据,将其转换为excel/PDF,并通过Response.Write或Response.BinaryWrite将其传输到客户端。当我们在弹出或不弹出时,这很好地工作。ASP.NET文件下载问题

我们刚刚实现了一项创建msg文件的新功能。但是,当流式传输到客户端时(与之前的代码相同),我们收到错误 - “Internet Explorer无法打开此网站”。我们使用查询字符串参数重定向到另一个页面,该参数指明要获取字节的文件并将其流式传输到客户端。

有没有人遇到过这个?此功能在开发机器上正常工作,但在分段(Server 2003,IIS 6)它已损坏并抛出此错误

+0

对于大型文件,我认为Response.TransmitFile比Response.Write/BinaryWrite更好用。 – Kane 2009-06-05 06:20:47

+0

我同意凯恩。 – 2010-07-01 04:48:03

回答

0

它可能是一个权利问题?您正在创建的excel/pdf是否保存到文件中,然后被强制下载? 如果是,则WEB-User-IIS a/c需要访问保存文件的文件/文件夹区域。

我在使用ASP.Net中的Microsoft.Excel或Excel(COM)创建Excel文件时遇到了类似的问题 - 它可以在我的开发机器上工作(我是本地管理员),但无法工作服务器。

服务器上的文件是在管理员帐户下创建的,因此Web-User-IIS帐户无权访问该文件,因此无法访问该文件。 IIS中有一个选项用于更改Excel运行IIS帐户的用户。


另外,application/octet-stream作为MIME类型在推送文件下载时一直很适合我。

0

我已经做了非常相似的事情。没有看到你的代码,它不可能说你到底是什么问题,但这里的几件事情要检查:

  • 你的Response.ContentType设置为正确的MIME类型的文件?
  • 您是否在调出Response.End()后调用了该文件的字节。如果没有,那么页面HTML可能被追加到文件中,这会破坏它。
+0

我们将Response.ContentType设置为正确的值。奇怪的是文件流页面正在另一个位置使用,它工作正常。只是在这种情况下,它不起作用。我们做了一个可以完成工作的解决方法(点击一个链接下载),但它困扰着我为什么不能正常工作。 – bdowden 2009-06-04 12:41:19