2010-08-09 134 views
0

我有一个应用程序在ASP.NET(VB.NET)前端,后端是Oracle。在oracle中,我有一个在两个文件服务器(文件服务器A,文件服务器B)上生成文件的过程。我有两个服务器一个是开发服务器,另一个是客户端服务器。在我的应用程序中,我有一个用于生成报告的网页'GenerateReport.aspx'。根据日期的后端程序生成文件在文件服务器A和B上。当我将应用程序托管在开发服务器上并下载生成的文件时,它将完全下载,并且当我托管客户端服务器的应用程序并仅下载生成的文件时文件的一部分被下载(97MB文件的56KB)。下面给出了我用来下载文件的代码。文件下载问题,不下载完整文件

私人小组DownloadFileClient(BYVAL RemoteFilePath作为字符串)

Try 
    Dim File As System.IO.FileInfo 
    File = New System.IO.FileInfo(RemoteFilePath) 

    If File.Exists Then 

     Response.Clear() 

     Response.AddHeader("Content-Disposition", "attachment; filename=" & File.Name) 

     Response.AddHeader("Content-Length", File.Length.ToString()) 

     Response.ContentType = "application/octet-stream" 

     Response.TransmitFile(File.FullName) 

     Response.End() 

    Else 
     lblErrorMsg.Text = "Unable to Download" 
    End If 
Catch ex As Exception 
    lblErrorMsg.Text = "Unable to Download,check file path" 
End Try 

末次

回答

0

刷新响应流调用Response.End()之前。

实际上,除非你有其他东西遗漏,否则你应该冲洗(),但不要打电话Response.End()

+0

非常感谢。它正在工作,但我的问题是为什么相同的代码在不同的机器上表现不同。 .net框架正在发挥其作用吗? – Usman 2010-08-11 11:50:29

+0

@Usman:我不确定所有可能导致你的差异。它可能是不同的安装修补程序,调试启用/禁用,时间问题等等。根据我的经验,在处理流时,在进程结束时对* always *'Flush'更安全。现在已经成为我的习惯。 – Toby 2010-08-11 13:13:41