如何在ASP.NET中增加最大上传文件大小?


237

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

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

[ConfigurationPropertyAttribute("maxRequestLength", DefaultValue = )]

这些参考文献都没有实际描述如何使用它,并且我尝试了几项都没有成功。我只想为某些要求文件上传的页面修改此属性。

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


您确定这是代码限制,而不是主机限制?IIS也有一个限制。
MrChrister

我很确定这是.Net的限制。下面的答案对我有用。
Eddie

Answers:


406

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

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

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


6
这使我为整个站点工作。我现在将其设置为10240(或10 MB)。谢谢!
Eddie

12
如果您正在运行IIS7 +,请参阅我的回答,但此方法无效。
2013年

是否可以将其限制为一个控制器?
吉列尔莫·瓦里尼'18

@Eddie我有两个web.config文件,我在两个文件中都使用了它,但是它不起作用。我该怎么做 ?
艾哈迈德(Ahmad)

2
也可以在特定路径上执行此操作。<location path =“ Api / Controller”> <system.web> <authorization> <allow users =“ *” /> </ authorization> <httpRuntime maxRequestLength =“ 102400” /> </system.web> </ location> (不需要授权标签)
nios

181

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

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

或在IIS(7)中:

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

我忘了千字节了:p
Andrew Myhre 2014年

10
您可能需要设置两个 maxRequestLength,并maxAllowedContentLength得到它的工作......看到stackoverflow.com/questions/6327452/...
MikeM

7
@AndrewMyhre maxAllowedContentLength以字节为单位,而不是KB。Microsoft文档说默认值为30 MB。
丹·伦道夫

1
@DanRandolph实际上默认值为30000000(约28.6MB),如iis.net/configreference/system.webserver/security/…所示
aaaantoine 16'7

您肯定需要两个设置。
mohrtan

74

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

1. IIS6或更低版本

默认情况下,在ASP.Net中,要上传到服务器的文件的最大大小约为4MB。可以通过修改web.config中maxRequestLength属性来增加此值 。

切记: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引入了请求过滤模块 .IIS7在ASP.Net之前执行,这意味着管道的工作方式是先检查IIS值(maxAllowedContentLength),然后再检查ASP.NET值(maxRequestLength)。 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/zh-cn/library/e1f13641(VS.80).aspx


17

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

<system.web>

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

度过了半天之后,这对我有所帮助!非常感谢 !!!
萨加尔·哈特里

13

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

<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>

7

如果其Windows 2003 / IIS 6.0,则在文件夹C:\ windows \ system32 \ inetsrv \ 中的metabase.xml文件中检出AspMaxRequestEntityAllowed =“ 204800”

我认为对于大多数用户而言,默认值“ 204800”(〜205Kb)太低。只需将值更改为您认为应该最大的值即可。

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

替代文字
(来源:itmaskinen.se

编辑:我没有正确阅读问题(如何在webconfig中设置maxrequest)。但是此信息对于其他人而言可能是个麻烦,许多人将其站点从win2000服务器移至win2003,并且具有正常的上传功能,并突然收到Request.BinaryRead Failed错误,便会使用它。所以我在这里留下答案。


5

我在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。


1
根据msdn.microsoft.com/zh-cn/library/e1f13641(v=vs.100).aspx,指定输入流缓冲阈值的限制,以千字节为单位。此值不应超过maxRequestLength属性。因此它最多应与请求长度相同?
杰夫,

是@ Jeff,requestLengthDiskThreshold的值应小于maxRequestLength,但第一个以字节表示。如果requestLengthDiskThreshold大于maxRequestLength,则将引发ConfigurationErrorsException,因此您可以自己测试正确的值。见forums.asp.net/t/...
马西莫Zerbini

4

如果您使用的是Framework 4.6

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

4

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

<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中。


该值应该更高并且用于代替可接受的答案,因为这对于验证请求大小更加安全。
乔纳森·奥尔特加

4

我知道这是一个老问题。

所以这就是你要做的:

在您的web.config文件中,将其添加到<system.web>

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

和这下<system.webServer>

<security>
    <requestFiltering>

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

    </requestFiltering>
</security>

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


2

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

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

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



0

我有一篇博客文章,介绍如何增加ASP上传控制的文件大小

从帖子:

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


0

如果它可以在您的本地计算机上运行,​​并且在IIS中部署后不能运行(我使用Windows Server 2008 R2),则有解决方案。

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.