none
下载过大文件出错 RRS feed

  • 问题

  • 用FileUpload将文件上传本地后,然后利用保存的路径名下载。但是当文件过大时,点击下载链接后,就会出现:正在查找的网页可能已被删除、重命名或暂时不可用,如果是小文件的话,一切正常。
    • 已移动 孟宪会Moderator 2010年4月23日 1:35 (发件人:.NET Framework 一般性问题讨论区)
    2010年4月22日 12:05

答案

全部回复

  • 你好 这有可能是你的IDC对网站文件请求的大小进行了限制
    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年4月22日 12:47
    版主
  • 1. 首先你需要在config文件中配置,你需要上传文件的最大值

    <httpRuntime 
    executionTimeout="300" 
    maxRequestLength="40960" 
    useFullyQualifiedRedirectUrl="false"/> 

    2. 其次你的global中做下面处理,超过这个最大值,跳转到一个自定义的友好页面:

    protected void Application_BeginRequest(object sender, EventArgs e)
        {
          HttpRequest request = HttpContext.Current.Request;
          if (request.ContentLength > 4194304)//4096000 is maxRequestLength
          {
            HttpApplication app = sender as HttpApplication;
            HttpContext context = app.Context;
    
            HttpWorkerRequest wr = (HttpWorkerRequest)(context.GetType().GetProperty("WorkerRequest", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(context, null));
    
            //IServiceProvider provider = (IServiceProvider)HttpContext.Current;
            //HttpWorkerRequest wr = (HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));
    
            byte[] buffer;
            if (wr.HasEntityBody())
            {
              int contentlen = Convert.ToInt32(wr.GetKnownRequestHeader(HttpWorkerRequest.HeaderContentLength));
              buffer = wr.GetPreloadedEntityBody();
              int received = buffer.Length;
              int totalrecv = received;
              if (!wr.IsEntireEntityBodyIsPreloaded())
              {
                buffer = new byte[65535];
                while (contentlen - totalrecv >= received)
                {
                  received = wr.ReadEntityBody(buffer, buffer.Length);
                  totalrecv += received;
                }
                received = wr.ReadEntityBody(buffer, contentlen - totalrecv);
              }
            }
    
            context.Response.Redirect("../ebo/UploadError.aspx");//Redirect to custom error page. 
          }
        }

    2010年4月23日 6:51
  • 您好,文件上传设置我已经改过,现在是可以上传大文件,但是不能下载
    2010年4月24日 14:01
  • 找服务器提供商,应该是他们做了限制。要做下载最好用独立服务器。

    2010年4月24日 15:51
    版主
  • 您好,文件上传设置我已经改过,现在是可以上传大文件,但是不能下载

    有什么抛出什么异常?
    2010年4月26日 2:19
  • 上载一般不会做限制 因为很多主机都允许上载很大的文件 然后解压 但是下载为了减少其带宽占用、硬盘吞吐量等等 一般会做限制的
    I see you~http://hi.baidu.com/1987raymondMy Blog~~~
    2010年4月26日 2:28
    版主