我正在使用以下代码来允许用户下载文件。
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)
此方法存在令人烦恼的问题,即此行之后的任何代码都无法正确执行。
它非常古老的代码,所以我猜这些天可能有更好的方法来做到这一点。有人可以推荐一个吗?
答案 0 :(得分:3)
是的,Response.WriteFile
会在响应完成时终止响应,所以我想你会得到一个ThreadAbortException
。如果要将文件写入响应并继续执行代码,我建议使用以下两个选项之一:
WriteFile
更改为BinaryWrite
。使用StreamReader将文件的内容转换为字节数组,并使用BinaryWrite
将该数据写入响应。这不会结束响应,您可以继续使用其他代码。WriteFile
,直到执行其他“等待”代码。然后返回到该行代码以完成事务。