突破IIS6上传文件尺寸限制

来源:互联网 发布:网络分配器 编辑:程序博客网 时间:2024/05/16 06:58
IIS 6 出于安全考虑, 默认最大请求200K(也即最大提交数据限额为200KByte, 204800Byte). 

解决办法: 

1. 关闭 IIS Admin Service 服务 

2. 打开 \Windows\system32\inesrv\metabase.xml 

3. 修改 ASPMaxRequestEntityAllowed 的值为自己需要的, 默认为 204800 

4. 启动 IIS Admin Service



 解决方法2 :

1. 新建文本文件:
'use VBS
set obj1=GetObject("winmgmts:/root/MicrosoftIISv2")
set obj2=obj1.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
'Output default value
WScript.Echo "AspMaxRequestEntityAllowed Default Value: " & obj2.AspMaxRequestEntityAllowed
'Reset the value
obj2.AspMaxRequestEntityAllowed=1024000 ' set to 1mbyte, u can set to other what you want
' Save data
obj2.Put_()
'Output new value
WScript.Echo "AspMaxRequestEntityAllowed New Value: " & obj2.AspMaxRequestEntityAllowed
2. 保存为requestchange.vbs
3. 进入命令行, 运行:
cscript [path]requestchange.vbs


如果是IIS7的话
对于asp.net,默认只允许上传2M文件,增加如下配置,一般可以自定义最大文件大小.
<httpRuntime  executionTimeout="300"  maxRequestLength="40960"  useFullyQualifiedRedirectUrl="false"/>
maxRequestLength:指示 ASP.NET 支持的HTTP方式上载的最大字节数。该限制可用于防止因用户 将大量文件传递到该服务器而导致的拒绝服务攻击。指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。executionTimeout:指示在被 ASP.NET 自动关闭前,允许执行请求的最大秒数。在当文件超出指定的大小时,如果浏览器中会产生 DNS 错误或者出现服务不可得到的情况,也请修改以上的配置,把配置数加大。

另外,ASP.NET上传文件时,可能还会出现这个问题:aspnet_wp.exe (PID: 1520) 被回收,因为内存消耗超过了 460 MB(可用 RAM 的百分之 60)。如果遇到此错误信息,相应的也在WebConfig里加上 memoryLimit 属性的值。例如:

1.<configuration>
2.<system.web>
3.<processModelmemoryLimitprocessModelmemoryLimit="80"/>
4.<system.web>
5.<configuration> 以上是解除ASP.NET上传文件的大小限制,使内存的使用率提升到80%。


<httpRuntime> 元素

配置 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"/>

可选的属性

属性选项描述appRequestQueueLimit ASP.NET 为应用程序排队的最大请求次数。当没有足够的空闲线程来执行请求时,请求将入队。当队列超出了该设置指定的限制时,传入请求将被拒绝,并显示“503 - 服务器太忙”的错误消息。executionTimeout 指出在 ASP.NET 自动关闭请求前,执行请求允许的最大秒数。maxRequestLength 指示 ASP.NET 支持的最大的上载文件的大小。该限制可用于防止用户向服务器张贴容量过大的文件而导致拒绝服务。所指定的大小以 KB 为单位。默认值为 4096 KB (4 MB)。minFreeLocalRequestFreeThreads ASP.NET 保留的可用来允许执行新本地请求的空闲线程的最小数量。这些数量的线程是为来自本地主机的请求而预留的,以防在处理过程中某些请求发出了对主机的子请求。这避免了因递归重新进入 Web 服务器而产生死锁的可能性。minFreeThreads 执行新请求所允许的空闲线程的最小数量。ASP.NET 为请求保留这么多的空闲线程是为了应付请求需要额外的线程完成其处理。useFullyQualifiedRedirectUrl 指示客户端的重定向是否完全符合条件(即某些移动控件所必需的 {HYPERLINK "http://server/path" } 格式),或是否反而将相关的重定向发送给客户端。 true指定需要按完全符合条件的格式发送客户端的重定向。系统自动将所有不符合条件的重定向转变成完全符合条件的格式,以便完成这一要求。 false指定客户端重定向无需自动转变成完全符合条件的格式。false 是默认值。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>

要求

  • 包含在:<system.web> 中
  • Web 平台:IIS 5.0、IIS 5.1、IIS 6.0
  • 配置文件:Machine.config、Web.config
  • 配置节处理程序:System.Web.Configuration.HttpRuntimeConfigurationHandler



<httpRuntime> 項目

.NET Framework 1.1

設定 ASP.NET HTTP Runtime 設定。可在電腦、網站、應用程式和子目錄層級來宣告這個區段。

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

選擇性屬性

屬性選項說明appRequestQueueLimit ASP.NET 將在應用程式中佇列要求的最大數目。當可用的執行緒不足以處理要求時,這些要求就會排入佇列。當佇列超過這個設定中指定的限制時,外來的要求將因「503 - 伺服器太忙碌」錯誤而遭到拒絕。executionTimeout 指示 ASP.NET 將要求自動關閉之前允許執行要求的最大秒數。enable 指定是否在目前節點和子節點層級啟用應用程式定義域。預設值是 true   true指定要啟用應用程式定義域。   false指定要停用應用程式定義域。這個應用程式沒有載入記憶體,任何用戶端要求將會產生 404 錯誤。idleTimeOut   指定應用程式定義域關閉之前的閒置時間。預設值是 20 分鐘。enableKernelModeCache 指定是否啟用輸出快取。就目前而言,必須安裝了 IIS 6.0 (含) 以後版本這個屬性才有意義。輸出快取的組態和要求的類型會決定是否可以快取內容。

如果要快取回應,必須符合下列準則:

  • 必須藉由頁面指示詞或使用快取 API 以明確啟用快取。
  • 快取必須有到期原則,讓核心 (Kernel) 知道什麼時候應該捨棄它。
  • 快取沒不得有任何變數標頭或參數。
  • 所提的要求不可要求任何驗證。
 true指定要啟用快取。 false指定不啟用快取。maxRequestLength 指示 ASP.NET 支援的最大檔案上載大小。這個限制可用來避免因使用者張貼大型檔案至伺服器所引起的拒絕服務的攻擊。使用 KB 來指定大小。預設值為 4096 KB (4 MB)。minFreeLocalRequestFreeThreads 使 ASP.NET 持續可用以允許執行新的本機要求的最低可用執行緒個數。這個執行緒個數保留供來自本機主機的要求使用,免得有些要求在處理期間發出子要求至本機主機。如此可避免遞迴重複進入 Web 伺服器的可能死結。minFreeThreads 允許執行新要求的最低可用執行緒個數。ASP.NET 保持許多可用的執行緒,供需要額外的執行緒來完成處理作業的要求使用。useFullyQualifiedRedirectUrl 指示用戶端重新導向為完整路徑 (以 {HYPERLINK "http://server/path" } 形式,有些機動控制項必須如此) 或改用相對重新導向傳送至用戶端。 true指定用戶端重新導向需要以完整路徑傳送。藉由自動將所有非完整路徑的重新導向轉換成完整路徑形式,即可達成此目的。 false指定用戶端重新導向不需要自動轉換成完整路徑形式。預設為 falseversionHeader   指定 ASP.NET 隨每個回應所傳送的版本標頭值。Microsoft Visual Studio .NET 會使用這個屬性來判斷使用中的 ASP.NET 版本。這個屬性對實際執行的網站是不必要的,且可以停用,方法是從 Web.config 或 Machine.config 中移除這個屬性,或將該屬性設定為空字串 (versionHeader="")。

範例

下列範例指定 ASP.NET 應用程式的 HTTP Runtime 參數。

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

需求

包含於:<system.web>

Web 平台:IIS 5.0、IIS 5.1、IIS 6.0

組態檔:Machine.config, Web.config

組態區段處理常式:System.Web.Configuration.HttpRuntimeConfigurationHandler

請參閱



0 0
原创粉丝点击