我有一个带有按钮的ASP Web表单页面。在回发时,该按钮将一些XML内容作为文件发送回用户。但是在一种情况下,它一直在使用长度为16759的字符串,下载的文件被缩短了10个字节。 Chrome和Firefox都表现出相同的行为。
解决方案是将内容类型从“text / xml”(我也尝试过“text / plain”)更改为“application / octet-stream”。但是,我想了解为什么其他内容类型以这种方式运行。
我的代码如下。 (我玩了几种不同的方法,并没有改变任何东西)
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.ContentType = "text/plain";
HttpContext.Current.Response.AddHeader("Content-Length", content.Length.ToString());
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"test.txt\"");
HttpContext.Current.Response.Write(content);
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Close();
答案 0 :(得分:3)
您所要做的就是不要在Stream上调用关闭。不要问我一个解释,我知道它是否有效。
根据Ray Cheng友情提供的MSDN link for HttpResponse.Close解释:
此方法以突然方式终止与客户端的连接,并非用于正常的HTTP请求处理。该方法向客户端发送重置数据包,这可能导致在服务器,客户端或其间某处缓冲的响应数据被丢弃。