下载.zip文件,文件大小限制最大化

时间:2013-08-28 06:11:01

标签: asp.net c#-4.0 download

我正在开发asp.net,c#2010中的项目。我试图以.zip格式下载mp3文件。它在本地PC上工作正常,即使大小介于80到150 MB之间。它也可以在实时服务器上运行,而.zip文件大小介于10 to 20 MB之间,但现在我已经上传了80 to 150 MB之间的文件,它不起作用,并且不会给加载页面带来任何错误。页面加载可能是因为我在web.config文件中设置了最大超时。

正在下载代码

if (File.Exists(virtualPath))
{
    FileInfo file = new FileInfo(virtualPath);
    Response.Clear();
    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment;filename=\"" + Path.GetFileName(AlbumName) + "\"");
    Response.AppendHeader("content-length", file.Length.ToString());
    Response.WriteFile(virtualPath);
    //Response.End();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}

的Web.config

<system.web>
      <customErrors mode="Off"></customErrors>
      <compilation debug="true" targetFramework="4.0" />
      <httpRuntime maxRequestLength="2000000000" executionTimeout="999999"/>
</system.web>

<system.webServer>
   <security>
       <requestFiltering>
                <requestLimits maxAllowedContentLength="2000000000" />
       </requestFiltering>
   </security>
   <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

不知道是什么原因。请帮我解决这个错误。如果您有其他解决方案,那就太棒了。

修改

if (File.Exists(virtualPath))
{
    FileInfo file = new FileInfo(virtualPath);
    Response.Clear();
    Response.ClearHeaders();
    Response.ClearContent();
    Response.ContentType = "application/zip";
    Response.AddHeader("content-disposition", "attachment;filename=\"" + Path.GetFileName(AlbumName) + "\"");
    Response.AppendHeader("content-length", file.Length.ToString());
    Response.Buffer = false; 
    Response.TransmitFile(virtualPath);
    //Response.WriteFile(virtualPath);
    //Response.End();
    HttpContext.Current.ApplicationInstance.CompleteRequest();
}

由于

3 个答案:

答案 0 :(得分:2)

如果您使用Response.TransmitFile(Server.MapPath(virtualpath)),它将关闭缓冲,您不必写入输出流。

答案 1 :(得分:0)

尝试在WriteFile之前添加此行:

Response.Buffer = false;

答案 2 :(得分:0)

有一个名为:

的IIS设置
  

maxAllowedContentLength

     

可选的uint属性。

     

指定请求中内容的最大长度,以字节为单位。

     

默认值为30000000。

猜猜您必须更改IIS设置以允许文件超过30MB。

在webconfig中,maxRequestLength以kB为单位测量!

  

打开文件   C:\ Windows \ System32 \ inetsrv \ config \ applicationHost.config并找到   行:

     

     

将overrideModeDefault属性设置为Allow。所以现在该行应该   看起来像:

     

<section name="requestFiltering" overrideModeDefault="Allow" />