解决ASP.NET上传文件大小限制

第一种方法,主要适用于IIS6.0版本

一、修改配置Web.Config文件中的httpRuntime节点
对于asp.net,默认只允许上传4M文件,增加如下配置,一般可以自定义最大文件大小.
一、修改配置Web.Config文件中的httpRuntime节点
对于asp.net,默认只允许上传4M文件,增加如下配置,一般可以自定义最大文件大小.

<httpRuntime

executionTimeout="800"

maxRequestLength="40960"

useFullyQualifiedRedirectUrl="false"/>

//executionTimeout预设(即默认)是 90 秒

//可以修改:executionTimeout = "180"

Asp.net支持的最大上传文件大小

在web.config中配置:

配置 ASP.NET HTTP 运行库设置。该节可以在计算机、站点、应用程序和子目录级别声明。

<configuration>
   <system.web>
      <httpRuntime>

<httpRuntime useFullyQualifiedRedirectUrl="true|false"
             maxRequestLength="size in kbytes"
             executionTimeout="seconds"
             minFreeThreads="number of threads"
             minFreeLocalRequestFreeThreads="number of threads"
             appRequestQueueLimit="number of requests"
             versionHeader="version string"/>
可选属性
属性 选项 说明

useFullyQualifiedRedirectUrl:指示客户端重定向是否是完全限定的(采用 {HYPERLINK "http://server/path" } 格式,这是某些移动控件所必需的),或者指示是否代之以将相对重定向发送到客户端。
    true 指定客户端重定向需要以完全限定的格式发送。这是通过自动将不是完全限定的格式的所有重定向转换为完全限定的格式来实现的。
    false 指定客户端重定向不需要被自动转换为完全限定格式。false 是默认选项。

maxRequestLength:指示 ASP.NET 支持的最大文件上载大小。该限制可用于防止因用户将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。

executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。

minFreeThreads:允许执行新请求的自由线程的最小数目。ASP.NET 为要求附加线程来完成其处理的请求使这些线程保持自由状态。

minFreeLocalRequestFreeThreads:ASP.NET 保持的允许执行新的本地请求的自由线程的最小数目。该线程数目是为从本地主机传入的请求而保留的,以防某些请求在其处理期间发出对本地主机的子请求。这避免了可能的因递归重新进入 Web 服务器而导致的死锁。

appRequestQueueLimit:ASP.NET 将为应用程序排队的请求的最大数目。当没有足够的自由线程来处理请求时,将对请求进行排队。当队列超出了该设置中指定的限制时,将通过“503 - 服务器太忙”错误信息拒绝传入的请求。

versionHeader:指定 ASP.NET 随每个响应所发送的版本头的值。Microsoft Visual Studio .NET 使用该属性来确定当前使用的 ASP.NET 版本。这对产品环境来说不是必需的,并且可以通过从 Web.config 或 Machine.config 移除该属性,或将该属性设置为空字符串 (versionHeader="") 来将其禁用。

示例
以下示例为 ASP.NET 应用程序指定 HTTP 运行时参数。

<configuration>
   <system.web>
      <httpRuntime maxRequestLength="4000"
         useFullyQualifiedRedirectUrl="true"
         executionTimeout="45"
         versionHeader="1.1.4128"/>
   </system.web>
</configuration>

二、如果还不行,可以使用思归提供的方案:

我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为ASP.NET会block直到把整个文件载入内存后,再加以处理。实际上,如果文件很大的话,我们经常会见到Internet Explorer显示 "The page cannot be displayed - Cannot find server or DNS Error",好像是怎么也catch不了这个错误。为什么?因为这是个client side错误,server side端的Application_Error是处理不到的,可以参考这个帖子研究一下产生这个错误的机理。

handling server error when upload file too large

解决的方法是利用隐含的HttpWorkerRequest,用它的GetPreloadedEntityBody 和 ReadEntityBody方法从IIS为ASP.NET建立的pipe里分块读取数据

IServiceProvider provider = (IServiceProvider) HttpContext.Current;
HttpWorkerRequest wr = (HttpWorkerRequest) provider.GetService(typeof(HttpWorkerRequest));
byte[] bs = wr.GetPreloadedEntityBody();
....
if (!wr.IsEntireEntityBodyIsPreloaded())
{
        int n = 1024;
        byte[] bs2 = new byte[n];
        while (wr.ReadEntityBody(bs2,n) >0)
       {
             .....
        }
}

三、IIS中上传大小的修改

1、首先要到进程中把IIS服务关了,即把inetinfo.exe进程关了,不然里面的文件不给你更改的哟~~~
    2、在系统目录中找到:windows/system32/inesrv/metabase.xml”文件,找个文本编辑器打开他,我都用EditPuls(这家伙不错,带字体色彩的),Ctrl+F 找到AspMaxRequestEntityAllowed="204800"这一项,这就是iis上传文件的默认大小了,默认为204800Byte,也就是200KB,将它改为你需要的大小就可以了!

第二种方式,主要是针对于iis7.0版本

1. 在用户自己的asp.net应用中修改web config文件,增加或修改以下红色背景内容即可

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

2. 打开C:/Windows/System32/inetsrv/config/schema/IIS_schema.xml,找到如下内容:

程序代码

<element name="requestLimits">
   <attribute name="maxAllowedContentLength" type="uint" defaultValue="30000000" />
   <attribute name="maxUrl" type="uint" defaultValue="4096" />
   <attribute name="maxQueryString" type="uint" defaultValue="2048" />
   <element name="headerLimits">
     <collection addElement="add" clearElement="clear" removeElement="remove" >
       <attribute name="header" type="string" required="true" isUniqueKey="true" validationType="nonEmptyString" />
       <attribute name="sizeLimit" type="uint" required="true" />
     </collection>
   </element>
</element>

将红色部分修改成合适大小即可[1],单位为字节。

说明

[1].IIS_schema.xml默认是无法修改的,即使是系统管理员也无法修改,必需修改下权限,再去掉其只读属性才可修改。

上图为IIS_schema.xml默认权限,直接点击"编辑"按钮你会发现权限是不能修改的,还得先做如下操作:
1).点击"高级"按钮进入高级安全设置界面;
2).切换到"所有者"选项卡,点"编辑"按钮,选中Administrators后确定;

现在可以在"安全"选项卡上点击"编辑"按钮,给Administrators增加修改和写入权限了,再去掉IIS_schema.xml只读属性,系统管理员就可以修改文件了。

原文:http://blog.sina.com.cn/s/blog_7ae9d7b901014fgi.html

时间: 2024-07-30 10:12:38

解决ASP.NET上传文件大小限制的相关文章

【转载】解决Apache2+PHP上传文件大小限制的问题

原文出处:http://evol1216.blog.163.com/blog/static/13019958020106783623528/ 在用PHP进行文件上传的操作中,需要知道怎么控制上传文件大小的设置,而文件可传大小是受到多种因素制约的,现总结如下: 1.php.ini:upload_max_filesize 所上传的文件的最大大小.默认值2M. 2.php.ini:memory_limit 本 指令设定 了一个脚本所能够申请到的最大内存字节数,默认值8M.如果不需要任何内存上的限制,必

应用HtmlInputFile进行大文件上传 解决asp.net上传大文件默认文件大小限制

选择一个文件,也可以正确上传至服务器,但您会发现文件大于2048的时候,出现:Internet Explorer显示 "The page cannot be displayed - Cannot find server or DNS Error",并且是怎么也catch不了这个错误. 解决的办法如下: 在web.config文件中增加上面代码,将可以解决上诉文件,这样小于10M的文件都没有问题 <system.web> <httpRuntime  executionT

解决&lt;s:file&gt;上传文件大小和 不能获取文件问题

1.<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25.200000762939453px;">表单标签中设置enctype="multipart/form-data"来确保匿名上载文件的正确编码.</span> <s:form action="part_add.action"

asp.net上传文件大小限制

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

解决phpmyadmin上传文件大小限制的配置方法

解决phpmyadmin上传文件大小限制的配置方法 phpmyadmin导入SQL文件时涉及到phpmyadmin上传文件大小限制问题,默认phpmyadmin上传文件大小为2M,如果想要phpmyadmin上传超过2M大文件,就需要修改phpmyadmin上传文件的大小配置或者将大文件分几批上传,相对来说修改phpmyadmin上传文件大小的限制来得方便很多.解决phpmyadmin上传文件大小限制问题涉及修改php.ini配置文件和phpmyadmin配置文件. 修改phpmyadmin上传

解决phpmyadmin上传文件大小限制的配置方法(转)

phpmyadmin导入SQL文件时涉及到phpmyadmin上传文件大小限制问题,默认phpmyadmin上传文件大小为2M,如果想要 phpmyadmin上传超过2M大文件,就需要修改phpmyadmin上传文件的大小配置或者将大文件分几批上传,相对来说修改phpmyadmin 上传文件大小的限制来得方便很多.解决phpmyadmin上传文件大小限制问题涉及修改php.ini配置文件和phpmyadmin配置文件. 修改phpmyadmin上传文件大小限制主要分修改php.ini配置文件和p

php和nginx默认上传文件大小限制的解决办法

以下配置在redhat6.4下完成 php上传文件大小限制: 1,首先找到php在用的配置文件 # php –ini 会输出:loaded configureration file:    /usr/loca/php/etc/php.ini 2,编辑php.ini #vim /usr/loca/php/etc/php.ini 3,修改其中的upload_max_filesize 10M  #默认值是2M 保存,退出vim 4,注意:要重启php-fpm,很多人说修改了不生效就是这么回事. #se

ASP.NET上传文件的几种方法

//上传文件实例 if (fileDealer.HasFile)//判断文件是否存在        {            string filepath = "";            try            {                string path = fileDealer.FileName;                string filename = path.Split('.')[0] + "_" + DateTime.Now

asp.net 上传文件限制

源自 http://blog.sina.com.cn/s/blog_7ae9d7b901014fgi.html 第一种方法,主要适用于IIS6.0版本 一.修改配置Web.Config文件中的httpRuntime节点对于asp.net,默认只允许上传4M文件,增加如下配置,一般可以自定义最大文件大小.一.修改配置Web.Config文件中的httpRuntime节点对于asp.net,默认只允许上传4M文件,增加如下配置,一般可以自定义最大文件大小. <httpRuntime executio