2010-08-09 282 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