分享好友 最新动态首页 最新动态分类 切换频道
解决ASP.NET上传文件大小限制
2024-12-27 08:49

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

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

 

一、修改配置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

最新文章
OpenAI与安杜里尔联合开发人工智能反无人机系统,安全新时代的来临!
在当前全球安全形势日益复杂的背景下,无人机技术的迅猛发展带来了前所未有的挑战。针对这一问题,OpenAI与安杜里尔工业公司近日宣布建立战略合作,目标是将尖端的人工智能技术整合进反无人机系统(CUAS)中。这一合作不仅展示了大模型在军
铝材品牌排行榜 铝材十大品牌银一百、凤铝、铭帝、兴发…
国内铝材十大排名 行榜 哪个铝材品牌好?选择品牌时考虑了品牌的历史、规模、技术实力、市场占有率、产品质量以及在不同领域的应用等因素。为了给你提供国内铝材十大品牌,首先想到一些知名的铝材品牌,如兴发铝材在行业中有较高地位,和银
四部门:到2027年,专精特新中小企业实现数字化改造应改尽改
  中新网12月13日电 据工信部网站消息,工业和信息化部、财政部、中国人民银行、金融监管总局发布《中小企业数字化赋能专项行动方案(2025—2027年)》,其中提出,到2027年,中小企业数字化转型“百城”试点取得扎实成效,专精特新中小企
新手学习SEO快速入门#蜘蛛池SEO
baidu搜索:如何联系八爪鱼SEO? baidu搜索:如何联系八爪鱼SEO? baidu搜索:如何联系八爪鱼SEO? 如何 联系八爪鱼 SEO? 一、了解基本概念和原理 首先,您需要了解SEO的基本概念和原理
马斯克再度手撕盖茨:特斯拉登顶全球市值第一 会让你破产!
快科技12月11日讯,近日,据媒体报道,美国当地时间12月10日,特斯拉创始人兼首席执行官马斯克当天在X平台上发文表示,盖茨持有的特斯拉空头头寸,可能最终会导致他破产。马斯克文中写道:如果特斯拉真的成为迄今为止全球市值最高的公司,
抖音店铺运营主要有哪些工作内容(分析抖音店铺运营职位具体做什么的)
刚开的抖店怎样推广呢?下面就为大家介绍一些抖店运营干货推广方法。1:刚开的抖店怎样获得客户当你刚开始抖店的时候,获得客户是一个非常重要的问题。如果你想要成功,你需要找到有效的推广方法。首先,你可以通过社交媒体来宣传你的店铺
苹果手机怎么粘贴复制
在数字时代,苹果手机凭借其流畅的操作体验和强大的功能,赢得了全球用户的喜爱。其中,粘贴复制功能作为日常操作的基础,无论是学习、工作还是娱乐,都扮演着不可或缺的角色。下面,我们就来详细了解一下苹果手机如何实现粘贴复制操作。**
武汉范湖万达CBD少儿编程培训咨询热线:   在线咨询: 点击交谈
课程单价:165元课时数:80节全部校区:童程童美少儿编程(滨江东中心)课程内容:乐高创意启蒙课程主要分为三个部分,认识世界、观察世界以及探索世界。认识世界是通过扮演、创造来引导孩子对社会创造一个认知,并且拥有真实的自我情感;
香港最准的资料免费公开,解决方案解析落实_豪华集R88.432
  在当今信息爆炸的时代,获取准确、及时的资料变得尤为重要。尤其是在香港这样一个国际化大都市,准确的数据和信息不仅对个人决策至关重要,也对企业的运营和发展起着关键作用。本文将围绕“香港最准的资料免费公开”这一主题,探讨如何
探秘GPT:开启人工智能语言模型的新纪元
       人工智能领域一直是科技发展的前沿,而其中的语言模型更是备受瞩目。其中,GPT(Generative Pre-trained Transformer)作为一种重要的语言模型,正逐渐改变着我们的生活与工作方式。本文将深入解
相关文章
推荐文章
发表评论
0评