一个下载站,平均每秒都有人下载。
一开始是直接指向的文件。
后来客户需要下载下来提示的为汉字的文件名,
后来改写方法: 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的错误。
各位有什么好的解决方案吗?

解决方案 »

  1.   


                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();
                }