在VB.net下载文件

时间:2011-04-15 12:59:49

标签: .net vb.net .net-3.5

我正在使用以下代码来允许用户下载文件。

Dim myFile As FileInfo = New FileInfo(strPath & strFile)
Response.AddHeader("Content-Disposition", "attachment; filename=" & _
Replace(myFile.Name, ".resources", ""))
Response.AddHeader("Content-Length", myFile.Length.ToString())
Response.ContentType = "application/octet-stream"
Response.WriteFile(myFile.FullName)

此方法存在令人烦恼的问题,即此行之后的任何代码都无法正确执行。

它非常古老的代码,所以我猜这些天可能有更好的方法来做到这一点。有人可以推荐一个吗?

1 个答案:

答案 0 :(得分:3)

是的,Response.WriteFile会在响应完成时终止响应,所以我想你会得到一个ThreadAbortException。如果要将文件写入响应并继续执行代码,我建议使用以下两个选项之一:

  1. WriteFile更改为BinaryWrite。使用StreamReader将文件的内容转换为字节数组,并使用BinaryWrite将该数据写入响应。这不会结束响应,您可以继续使用其他代码。
  2. 推迟WriteFile,直到执行其他“等待”代码。然后返回到该行代码以完成事务。