解決ASP.NET上傳文件大小限制

第一種方法,主要適用於IIS6.0版本web

 

1、修改配置Web.Config文件中的httpRuntime節點
對於asp.net,默認只容許上傳4M文件,增長以下配置,通常能夠自定義最大文件大小.
1、修改配置Web.Config文件中的httpRuntime節點
對於asp.net,默認只容許上傳4M文件,增長以下配置,通常能夠自定義最大文件大小.windows

<httpRuntime安全

executionTimeout="800"服務器

maxRequestLength="40960"app

useFullyQualifiedRedirectUrl="false"/>asp.net


//executionTimeout預設(即默認)是 90 秒編輯器

//能夠修改:executionTimeout = "180"ide

Asp.net支持的最大上傳文件大小字體

 

在web.config中配置:ui

 

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

 

2、若是還不行,可使用思歸提供的方案:

咱們在上傳大文件時都遇到過這樣或那樣的問題。設置很大的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)
       {
             .....
        }
}

3、IIS中上傳大小的修改

一、首先要到進程中把IIS服務關了,即把inetinfo.exe進程關了,否則裏面的文件不給你更改的喲~~~
    二、在系統目錄中找到: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只讀屬性,系統管理員就能夠修改文件了。

相關文章
相關標籤/搜索