Asp.net 将二进制文件写入响应后,回发中没有响应

Asp.net 将二进制文件写入响应后,回发中没有响应,asp.net,vb.net,download,response,Asp.net,Vb.net,Download,Response,要求: 我想点击一个按钮下载一个文件(*.docx),首先我读取文件的字节,然后我将字节写入响应,这很好,我以前使用过几次此代码,但我得到了一个奇怪的行为,代码成功执行,没有例外,但是没有响应被发送回客户端(没有任何事情发生,没有响应,没有文件下载),此外,如果我将代码放在Page_Load事件中,代码工作正常,只在button click事件(即回发)中不工作,下面是我使用的代码: Dim arrBytes() = File.ReadAllBytes(strFilePath) Response

要求: 我想点击一个按钮下载一个文件(*.docx),首先我读取文件的字节,然后我将字节写入响应,这很好,我以前使用过几次此代码,但我得到了一个奇怪的行为,代码成功执行,没有例外,但是没有响应被发送回客户端(没有任何事情发生,没有响应,没有文件下载),此外,如果我将代码放在Page_Load事件中,代码工作正常,只在button click事件(即回发)中不工作,下面是我使用的代码:

Dim arrBytes() = File.ReadAllBytes(strFilePath)
Response.ClearHeaders()
Response.ContentType = "application/octet-stream"
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment; filename=test.docx")
Response.AddHeader("Content-Length", arrBytes.Length.ToString())
Response.BinaryWrite(arrBytes)
Response.Flush()
Response.SuppressContent = True
HttpContext.Current.ApplicationInstance.CompleteRequest()
非常感谢您的帮助

编辑:
我尝试了
'Response.WriteFile
而不是
Response.BinaryWrite
Response.End
而不是
ApplicationInstance.CompleteRequest
,但没有成功。

原来母版页中有一个更新面板,当我将按钮注册为回发控件时,问题就解决了。。。我知道这很痛

因此,我在
页面加载
事件中使用这行代码解决了这个问题:

ScriptManager.GetCurrent(Me).RegisterPostBackControl(btnSubmit)

你调用Response.Close()了吗?@old程序员调用Response.Close()。在我看来,它不是用来直接使用的。@OldProgrammer不,我从未调用过
Response.Close