0
要求: 我想下載一個文件(* .docx),點擊一個按鈕,首先讀取文件的字節,然後我寫入字節到響應,這工作正常,我已經多次使用此代碼,但我得到這種奇怪的行爲,代碼成功執行,沒有例外,但沒有響應被髮回到客戶端(沒有發生,沒有響應,沒有文件下載),此外,如果我把代碼放在Page_Load事件中,代碼完美地工作,它只在按鈕單擊事件(即回發)中不起作用,下面是我正在使用的代碼:將二進制寫入響應後回發中沒有響應
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
但沒有成功。
你叫Response.Close():
所以我用這行代碼在
Page_Load
事件解決它? – OldProgrammer@OldProgrammer Response.Close()的[documentation](https://msdn.microsoft.com/en-us/library/system.web.httpresponse.close%28v=vs.110%29.aspx) 。在我看來,這並不意味着直接使用。 – mason
@OldProgrammer不,我從來沒有調用過'Response.Close' –