【问题标题】:Maximum file size allowed by ASP.NET file upload ControlASP.NET 文件上传控件允许的最大文件大小
【发布时间】:2013-03-06 22:18:56
【问题描述】:

我在 ASP.Net 中使用文件上传控件,遵循以下博客方法。

http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

4MB 默认设置在 machine.config 中,但您可以在 web.config 中覆盖它。例如,要将上传限制扩大到 20MB,您可以这样做:

<system.web>
  <httpRuntime executionTimeout="240" maxRequestLength="20480" />
</system.web>

问题: 如果我们还允许用户上传 50-60 MB 的文件,我可以将请求的长度增加到什么级别(最大大小)以及对站点的性能影响。

【问题讨论】:

  • 嗯,性能影响将是每次有人上传大量文件时都会使用那么多带宽.....
  • IIS 7 大约为 2 GB(但@Liam 关于带宽的考虑是正确的)。如果您真的需要...最好实现另一个文件上传接口(例如使用 POST 和自定义浏览器扩展)。
  • @Liam,@Adriano 该应用程序将托管在 Intranet 上,因此可用带宽更多。但我想将用户限制在一定范围内,就好像 IIS 正在处理 100MB-200MB 文件一样,网站的其他用户会获得较低的性能。
  • @Pratik 更不用说您网络的其他用户了!即使在千兆以太网上,你也会有 5 个用户上传一个 100Mb 的文件,这会很痛苦!

标签: c# asp.net performance file-upload


【解决方案1】:

maxRequestLength 字段的“理论”最大值是有符号 32 位整数数据类型 (Int32.MaxValue) 的最大值。

但是,您必须测试上传才能了解您的表现。

编辑:

来自a Microsoft support ticket

理论上,最大文件上传大小相当大。然而, 由于 ASP.NET 健康监控,您不能上传非常大的文件 ASP.NET 中的文件。 ASP.NET 工作进程有一个虚拟地址 2 GB 的空间。但是,ASP.NET 工作进程仅 由于运行状况监控和内存,使用略多于 1 GB 碎片化。

在上传过程中,ASP.NET 将整个文件加载到内存中 在用户可以将文件保存到磁盘之前。因此,过程 由于 processModel 的 memoryLimit 属性可能会被回收 Machine.config 文件中的标记。 memoryLimit 属性指定 ASP.NET 工作进程可以使用的物理内存百分比 过程自动回收前的排气。回收 防止内存泄漏导致 ASP.NET 崩溃或停止 回应。

此外,其他因素也会影响最大文件大小 可以上传。这些因素包括可用内存、可用 硬盘空间、处理器速度和当前网络流量。和 上传文件的常规流量,Microsoft 建议您 使用 10 到 20 兆字节 (MB) 范围内的最大文件大小。如果 您很少上传文件,最大文件大小可能为 100 MB。

注意您可以在 ASP.NET 中上传大于 100 MB 的文件。 但是,Microsoft 建议您遵循最大文件上传 本文中提到的尺寸。确定更精确 文件大小,在类似的计算机上执行压力测试 将在生产中使用的那些。

【讨论】:

  • -1,不,它以 KB 表示,并且限制要低得多(2,097,152 KB = 2 GB)
  • @Adriano 我没有提到任何关于号码限定的事情。但是,很高兴知道它是KB,我会更新我的答案。
  • @DavinTryon 该解释在证明 ASP.net 文件上传控制的限制方面非常有用。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-31
  • 2012-08-30
  • 2013-06-23
  • 1970-01-01
  • 2014-04-04
  • 2017-10-18
相关资源
最近更新 更多