使用Response.BinaryWrite(MyByte)和Context.ApplicationInstance.CompleteRequest()时获取不需要的输出

时间:2013-12-16 07:43:29

标签: .net vb.net download response

我正在尝试从数据库下载word文档(.docx)。

所以我在下载功能结束时使用了以下代码

 Response.BinaryWrite(MyByte)
 Context.ApplicationInstance.CompleteRequest()

但它会将不需要的内容写入我的word文件,因此每次打开文件时都会抛出错误。

  

文件已损坏且无法打开

我用Google搜索了这个问题,我使用了 Response.End()而不是 Context.ApplicationInstance.CompleteRequest()

但是当Thread被中止时,Response.End抛出错误。和文件打开完美。

1 个答案:

答案 0 :(得分:0)

我试过这个来解决我的问题

我刚刚设法通过替换

解决了这个问题
Response.Clear();

Response.ClearContent();
Response.ClearHeaders();

所以整个事情看起来像:

byte[] downloadBytes = doc.GetData();
Response.ClearContent();
Response.ClearHeaders();

Response.Buffer = true;
Response.ContentType = "application/msword";
Response.AddHeader("Content-Length", downloadBytes.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=myFile.docx");
Response.BinaryWrite(downloadBytes);
Response.Flush();
Response.End();