非常奇怪的问题,各位能否帮忙看下问题出在什么方面。

wc19840730 2017-06-12 11:53:38
问题描述:
一个下载文件的功能,存在10%的用户报无法下载的问题。

具体描述:

代码上不进系统的CATCH,能够弹出保存文件的选择框,但是点击保存时,报网络错误,无法下载,有时候能下载,但是下载下来的是0KB的假文件。

但比较奇怪的是,只有当下载服务器上第三级目录下的文件时,才会报这个问题,同样的方法下载网站根目录下的文件时,却可以从成功下载。比如C:\1.TXT可以下载,C:\Report\1\1.txt时却报错。

同时,如果这些用户使用特定浏览器时,却可以下载,比如360浏览器。

各位有没有遇到过同样的问题,我有点摸不着头脑从哪入手判断问题了。

下载代码如下:
 
try
{
String saveFileName = url;
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.Charset = "UTF-8";
System.Web.HttpContext.Current.Response.Buffer = true;
//EnableViewState = false;
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpContext.Current.Server.UrlEncode(filename));
System.Web.HttpContext.Current.Response.WriteFile(saveFileName);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
//System.Web.HttpContext.Current.Response.End();
return 1;
}
catch
{
System.Web.HttpContext.Current.Response.Write("下载发生错误");
return 2;
}
...全文
178 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wc19840730 2017-06-27
  • 打赏
  • 举报
回复
引用 8 楼 xuzuning 的回复:
所以我说的都是 尝试 当你把所有可能的都排除了,剩下的就是问题的原因
谢谢你。 因为没有加上数据长度的关系。加上了就好了。
wc19840730 2017-06-12
  • 打赏
  • 举报
回复
自己顶一个~~
xuzuning 2017-06-12
  • 打赏
  • 举报
回复
所以我说的都是 尝试 当你把所有可能的都排除了,剩下的就是问题的原因
wc19840730 2017-06-12
  • 打赏
  • 举报
回复
引用 3 楼 starfd 的回复:
你或者试下不要用writefile方法,直接读取filestream然后写入response的方式试试看会不会还这样
感谢,我试试这个办法。
wc19840730 2017-06-12
  • 打赏
  • 举报
回复
引用 2 楼 xdashewan 的回复:
这现象你自己能不能重现?
我不能重现,而且我有另一个使用同样方法下载文件的另一个项目就完全没有问题。 所以说非常诡异,我都搞不明白到底是服务器问题还是网络问题还是浏览器问题。
wc19840730 2017-06-12
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
1、System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpContext.Current.Server.UrlEncode(filename)); 应是无路径的文件名 2、尝试加上数据长度 3、尝试声明二进制流 由于你声明了 utf-8,所以 1、不应输出 BOM 头 2、确认输出的确实是 utf-8 数据
可是90%的用户是可以成功下载的。而且那些不能下载用户使用某几个特定的浏览器就可以下载了。 而且同样的需求曾经成功运行过,突然就不行了,真是奇怪……
xuzuning 2017-06-12
  • 打赏
  • 举报
回复
1、System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpContext.Current.Server.UrlEncode(filename)); 应是无路径的文件名 2、尝试加上数据长度 3、尝试声明二进制流 由于你声明了 utf-8,所以 1、不应输出 BOM 头 2、确认输出的确实是 utf-8 数据
  • 打赏
  • 举报
回复
你或者试下不要用writefile方法,直接读取filestream然后写入response的方式试试看会不会还这样
xdashewan 2017-06-12
  • 打赏
  • 举报
回复
这现象你自己能不能重现?

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧