【发布时间】:2017-03-27 21:47:19
【问题描述】:
我有大文件(大约 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
我的问题是这个处理程序有时不能正常工作。 大部分客户都可以通过这个handler下载,但是有些客户点击下载链接,会无休止地等待服务器的响应,等待很长时间后,显示错误页面,说IE无法显示网页。有些客户尝试从 IE8 下载文件,它会直接显示错误页面。 我非常感谢任何人可以帮助解决这个问题。谢谢!
【问题讨论】:
-
2GB - 我认为这太大了,不实用。为什么不将文件放入 Dropbox 并发送链接给您的客户?
-
如果将
Reponse.Close()更改为Response.End()会怎样? -
当我使用这个处理程序下载小文件(100MB)时,它工作得很好,所以有人能告诉我response.transmitFile有什么限制吗?
-
听起来好像只是超时了... IIS 会跟踪您在处理请求之前可以花多长时间处理请求的限制。浏览器做同样的事情。传输 2GB 的文件需要很长时间,而且您可能会遇到该限制。
-
@JoelCoehoorn,我完全同意你的看法,你能给我一些关于这个限制的建议吗?我需要配置IIS的哪一部分?我正在使用 Win2012 R2 + IIS 8.5
标签: asp.net vb.net filehandler