asp.net VB.net文件下载处理程序无法正常工作

时间:2017-03-27 21:47:19

标签: asp.net vb.net filehandler

我有大文件(约2GB)分发给我们的客户,我的网站是由asp.net vb编写的,这是我的文件下载处理程序:

Public Class FileHandler
    Implements IHttpHandler
    Public Sub ProcessRequest(ByVal httpcontext As HttpContext) Implements IHttpHandler.ProcessRequest
        If HttpContext.User.Identity.IsAuthenticated Then
            Dim FileName As String = HttpContext.Request.QueryString("File")            
            HttpContext.Response.Buffer = False
            HttpContext.Response.Clear()
            HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" & FileName)
            HttpContext.Response.ContentType = "application/exe"
            HttpContext.Response.TransmitFile("~/download/ExE/" & FileName)
            HttpContext.Response.Flush()
            HttpContext.Response.Close()            
        End If
    End Sub
    Public ReadOnly Property IsReusable As Boolean Implements IHttpHandler.IsReusable
        Get
            Return False
        End Get
    End Property
End Class

我的问题是这个处理程序有时无法正常工作。 大多数客户可以通过这个处理程序下载它,但是有些客户点击下载链接,它会无休止地等待服务器的响应,经过很长时间的等待,它显示错误页面说IE无法显示网页。有些客户尝试从IE8下载文件,它会直接显示错误页面。 我真的很感激任何人都可以帮助解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:2)

我使用一个按钮或只是文件本身的普通链接,我从来没有使用过处理程序来下载文件。

例如,在aspx上我有一个按钮,在后面的代码中我使用响应对象将用户发送到文件:

Protected Sub Button_DownloadFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_DownloadFile.Click

    Response.AddHeader("Content-Disposition", "attachment; filename=TheFileName.ext")
    Response.WriteFile("~/App_Data/TheFileName.ext")

END SUB