【问题标题】:How to increase the max upload file size in ASP.NET?如何增加 ASP.NET 中的最大上传文件大小?
【发布时间】:2010-09-22 06:18:49
【问题描述】:

我有一个在 ASP.NET 中上传文件的表单。我需要将最大上传大小增加到默认的 4 MB 以上。

我发现在某些地方引用了msdn 的以下代码。

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

没有任何参考资料真正描述了如何使用它,我已经尝试了几件事,但都没有成功。我只想为某些要求上传文件的页面修改此属性。

这是正确的路线吗?我该如何使用它?

【问题讨论】:

  • 您确定这是代码限制,而不是主机限制吗? IIS 也有限制。
  • 我很确定这是一个 .Net 限制。下面的答案对我有用。

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


【解决方案1】:

此设置位于您的 web.config 文件中。不过,它会影响整个应用程序...我认为您不能在每页上设置它。

<configuration>
  <system.web>
    <httpRuntime maxRequestLength="xxx" />
  </system.web>
</configuration>

“xxx”以 KB 为单位。默认值为 4096 (= 4 MB)。

【讨论】:

  • 这让我在网站范围内工作。我现在将其设置为 10240(或 10 MB)。谢谢!
  • 如果您正在运行 IIS7+ 并且这不起作用,请查看我的答案。
  • 是否可以将其限制为一个控制器?
  • @Eddie 我有两个 web.config 文件,我在两个文件中都使用了它,但它不起作用。我该怎么做?
  • 这也可以在特定路径上进行。 (不需要授权标签)
【解决方案2】:

对于 IIS 7+,以及添加 httpRuntime maxRequestLength 设置,您还需要添加:

  <system.webServer>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="52428800" /> <!--50MB-->
      </requestFiltering>
    </security>
  </system.webServer>

或者在 IIS (7) 中:

  • 选择您要允许接受大文件上传的网站。
  • 在主窗口中双击“请求过滤”
  • 选择“编辑功能设置”
  • 修改“最大允许内容长度(字节)”

【讨论】:

【解决方案3】:

为了增加上传文件的大小限制,我们有两种方法

1. IIS6 或更低

默认情况下,在 ASP.Net 中,要上传到服务器的文件的最大大小是 4MB 左右。这个值可以通过修改来增加 web.config 中的 ma​​xRequestLength 属性。

记住:maxRequestLenght 以 KB 为单位

示例:如果要将上传限制为 15MB,请将 maxRequestLength 设置为“15360”(15 x 1024)。

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

2。 IIS7 或更高版本

此处用于上传文件的方式略有不同。IIS7 有 引入请求过滤模块。之前执行的 ASP.Net.Means 管道的工作方式是 IIS value(ma​​xAllowedContentLength) 先检查然后 ASP.NET value(ma​​xRequestLength) 被选中。maxAllowedContentLength 属性默认为 28.61 MB。此值可以增加 修改同一 web.config 中的两个属性。

记住:maxAllowedContentLength 以字节为单位

示例:如果要将上传限制为 15MB,请将 maxRequestLength 设置为“15360”,将 maxAllowedContentLength 设置为“15728640”(15 x 1024 x 1024)。

<system.web>
   <!-- maxRequestLength for asp.net, in KB --> 
   <httpRuntime maxRequestLength="15360" ></httpRuntime> 
</system.web>

<system.webServer>              
   <security> 
      <requestFiltering> 
         <!-- maxAllowedContentLength, for IIS, in bytes --> 
         <requestLimits maxAllowedContentLength="15728640" ></requestLimits>
      </requestFiltering> 
   </security>
</system.webServer>

MSDN 参考链接https://msdn.microsoft.com/en-us/library/e1f13641(VS.80).aspx

【讨论】:

  • 在 Web.config 中添加给定代码是否会影响 IIS(我的意思是,如果我在 Web.config 中更改此值,是否会有 IIS 重置)。我特别要求 IIS 7。
【解决方案4】:

我相信Web.config 中的这一行将设置最大上传大小:

<system.web>

        <httpRuntime maxRequestLength="600000"/>
</system.web>

【讨论】:

  • 花了半天时间后,这对我有帮助!!!非常感谢!!!
  • 如果我配置你的代码,任何大小的文件都会被上传,对吗?它也适用于 IIS7 吗?感谢您的帮助。
【解决方案5】:

对于 2 GB 的最大限制,在您的应用程序 web.config 上:

<system.web>
  <compilation debug="true" targetFramework="4.5" />
  <httpRuntime targetFramework="4.5" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="2147483647" />
    </requestFiltering>
  </security>
</system.webServer>

【讨论】:

    【解决方案6】:

    如果它的 windows 2003 / IIS 6.0 然后检查位于文件夹 C:\windows\system32\inetsrv\ 中的文件 metabase.xml 中的 AspMaxRequestEntityAllowed = "204800"

    在我看来,“204800”(~205Kb)的默认值对于大多数用户来说太低了。只需将值更改为您认为应该最大的值。

    如果您在编辑后无法保存文件,您必须停止 ISS 服务器或启用服务器以允许编辑文件:


    (来源:itmaskinen.se

    编辑:我没有正确阅读问题(如何在 webconfig 中设置 maxrequest)。但是这个信息可能对其他人感兴趣,许多将他们的网站从 win2000-server 移动到 win2003 并且具有工作上传功能并突然得到 Request.BinaryRead Failed 错误的人将使用它。所以我把答案留在这里。

    【讨论】:

      【解决方案7】:

      我在 win 2008 IIS 服务器中遇到了同样的问题,我已经解决了在 web.config 中添加此配置的问题:

      <system.web>
          <httpRuntime executionTimeout="3600" maxRequestLength="102400" 
           appRequestQueueLimit="100" requestValidationMode="2.0"
           requestLengthDiskThreshold="10024000"/>
      </system.web>
      

      requestLengthDiskThreshold 默认为 80000 字节,因此对于我的应用程序来说太小了。 requestLengthDiskThreshold 以字节为单位,maxRequestLength 以千字节为单位。

      如果应用程序正在使用System.Web.UI.HtmlControls.HtmlInputFile 服务器组件,则会出现问题。需要增加requestLengthDiskThreshold来解决。

      【讨论】:

      • 根据msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx“指定输入流缓冲阈值的限制,以千字节为单位。此值不应超过 maxRequestLength 属性。”所以最多应该和请求长度一样?
      • 是的@Jeff,requestLengthDiskThreshold的值应该小于maxRequestLength,但是第一个以字节表示。如果 requestLengthDiskThreshold 大于 maxRequestLength,则应抛出 ConfigurationErrorsException,因此您可以自行测试正确的值。见forums.asp.net/t/…
      【解决方案8】:

      最大文件大小可以限制为单个 MVC 控制器甚至是一个动作。
      web.config 标签可用于此:

      <location path="YourAreaName/YourControllerName>/YourActionName>">
        <system.web>
          <!-- 15MB maxRequestLength for asp.net, in KB 15360 -->
          <httpRuntime maxRequestLength="15360" />
        </system.web>
        <system.webServer>
          <security>
            <requestFiltering>
              <!-- 15MB maxAllowedContentLength, for IIS, in bytes 15728640 -->
              <requestLimits maxAllowedContentLength="15728640" />
            </requestFiltering>
          </security>
        </system.webServer>
      </location>
      

      或者您可以在区域自己的 web.config 中添加这些条目。

      【讨论】:

      • 这应该更高,并使用而不是接受的答案,因为这对于验证请求大小更安全。
      【解决方案9】:

      我知道这是一个老问题。

      所以这就是你必须做的:

      在您的 web.config 文件中,将其添加到 &lt;system.web&gt;:

      <!-- 3GB Files / in kilobyte (3072*1024) -->
      <httpRuntime targetFramework="4.5" maxRequestLength="3145728"/>
      

      这个在&lt;system.webServer&gt;:

      <security>
          <requestFiltering>
      
            <!-- 3GB Files / in byte (3072*1024*1024) -->
            <requestLimits maxAllowedContentLength="3221225472" />
      
          </requestFiltering>
      </security>
      

      您在评论中看到这是如何工作的。在一个中,您需要以字节为单位,在另一个中以千字节为单位。希望有帮助。

      【讨论】:

        【解决方案10】:

        如果您使用的是 Framework 4.6

        <httpRuntime targetFramework="4.6.1" requestValidationMode="2.0" maxRequestLength="10485760"  />
        

        【讨论】:

          【解决方案11】:

          您可以在应用程序 web.config 文件中编写该代码块。

          <httpRuntime maxRequestLength="2048576000" />
          <sessionState timeout="3600"  />
          

          通过编写该代码,您可以上传比现在更大的文件

          【讨论】:

            【解决方案12】:

            如果您使用 sharepoint,您也应该使用管理工具配置最大大小: kb925083

            【讨论】:

              【解决方案13】:

              我有一篇关于如何increase the file size for asp upload control 的博文。

              来自帖子:

              默认情况下,FileUpload 控件允许上传最大 4MB 的文件并执行 超时为 110 秒。可以从 web.config 文件的 httpRuntime 部分更改这些属性。 maxRequestLength 属性确定可以上传的最大文件大小。这 executionTimeout 属性确定执行的最长时间。

              【讨论】:

                【解决方案14】:

                如果它在您的本地机器上工作并且在 IIS 中部署后不能工作(我使用 Windows Server 2008 R2),我有一个解决方案。

                打开 IIS (inetmgr) 访问您的网站 在右侧转到内容(请求过滤) 转到编辑功能设置 将最大内容大小更改为(您需要的字节数) 这将起作用。 您还可以从以下线程中获得帮助 http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

                【讨论】:

                  【解决方案15】:

                  如果您使用 ssl 证书,您的 ssl 管道 F5 设置配置。重要。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-08-08
                    • 1970-01-01
                    • 2013-03-29
                    • 2020-08-18
                    • 1970-01-01
                    • 2018-01-04
                    • 2016-10-15
                    相关资源
                    最近更新 更多