下载文件,Server is too busy 求救

yigeming2008 2013-03-25 03:19:55
一个下载站,平均每秒都有人下载。
一开始是直接指向的文件。
后来客户需要下载下来提示的为汉字的文件名,
后来改写方法:

private void DownTest(string title, string fileurl, string ext)
{

string filename = System.Web.HttpUtility.UrlEncode(title + "." + ext, System.Text.Encoding.UTF8);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
System.Web.HttpContext.Current.Response.TransmitFile(Server.MapPath(fileurl));
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();

}

运行了一会,就会出现 Server is to busy的错误。
各位有什么好的解决方案吗?
...全文
121 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
嗯,嗯,不是太明白,不过 11楼说的,可以根据线程控制同时下载数,不晓得可行不?
yigeming2008 2013-03-25
  • 打赏
  • 举报
回复
看来,我还是考虑一下,是不是需要用线程处理下载了。。。
  • 打赏
  • 举报
回复
引用 9 楼 yigeming2008 的回复:
百度网易腾讯的服务器能让你上传1T的文件?
那就要付费了,别人也是要赚钱的,记得上次金山T盘有邀请码可以激活1T
yigeming2008 2013-03-25
  • 打赏
  • 举报
回复
百度网易腾讯的服务器能让你上传1T的文件?
  • 打赏
  • 举报
回复
参考话说1楼的解决方案也不错啊,你觉得你的服务器能比得上百度网易腾讯?
md5e 2013-03-25
  • 打赏
  • 举报
回复
要即时释放资源
yigeming2008 2013-03-25
  • 打赏
  • 举报
回复
我也试过其它的下载方式,但是对IO操作一频繁,就爱出现这个问题。
md5e 2013-03-25
  • 打赏
  • 举报
回复

            using (FileStream fso = new FileStream(Server.MapPath(DownAdress), FileMode.Open,FileAccess.ReadWrite,FileShare.Inheritable))
            {
                string[] filename=DownAdress.Split(new char[]{'/'});
                int len = Convert.ToInt32(fso.Length);
                byte[] FileObj = new byte[len];
                fso.Read(FileObj, 0, len);
                Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", HttpUtility.UrlEncode(filename[filename.Length - 1]), System.Text.Encoding.UTF8));
                Response.AddHeader("Content-Length", len.ToString());
                Response.ContentType = "application/octet-stream";
                Response.Charset = "UTF-8";
                Response.ContentEncoding = System.Text.Encoding.UTF8; 
                Response.BinaryWrite(FileObj);
                Response.Flush();
                Response.Clear();
                fso.Close();
            }
await2013 2013-03-25
  • 打赏
  • 举报
回复
升级服务器、负载均衡
md5e 2013-03-25
  • 打赏
  • 举报
回复
先缓冲到内存,再输出试试
yigeming2008 2013-03-25
  • 打赏
  • 举报
回复
你好,我是想找到怎么解决这个问题的方法。 技术解决 而不是你说的放到别的服务器上。如果别的服务器打不开了。这个站不也就废了吗。。
gxingmin 2013-03-25
  • 打赏
  • 举报
回复
把你文件上传到一些免费的云服务器上,然后把下载链接指定到那些云服务器,这样你的服务器压力就小了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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