Site icon Mr. 沙先生

Server2008、2008R2 IIS7上傳檔案大小限制

在架設Server的時候常會需要讓使用者上傳檔案,除了在code上限制以外,IIS也有他本身的限制

這篇提到 IIS6、IIS7.x的設定方式

IIS6 for Windows Server 2003

※ASP上傳限制

  1. 停止IIS Admin Service服務
  2. 記事本開啟C:windowssytem32inetservmetabase.xml

上傳限制:search  AspMaxRequestEntityAllowed 字串,將204800(200K)修改為需要的數字
下載限制:search  AspBufferingLimit 字串,預設4MB修改為需要的數字

    3.  啟動IIS Admin Service服務

※一般檔案上傳無限制

IIS7.x for Windows Server 2008

※ASP上傳限制同Server2003

※一般檔案上傳限制

修改位置於C:WindowsSystem32inetsrvconfigapplicationHost.xml內的maxAllowedContentLength=數值

但修改後要儲存時發現沒有權限可以儲存,明明已經是Administrator的權限了呀!
其實在Administrator的上面還有一個系統最高權限TrustedInstaller

TrustedInstaller權限在使用者權限內是找不到的,而且也無法使用Administrator新增。

假使今天丟了一個和applicationHost.xml一樣的檔案進去,沒有TrustedInstaller權限也是一樣無法讓IIS正常啟動的唷!

有想過使用繼承父系權限的方式將TrustedInstaller權限加入,但參考前人使用的狀況暫時先把這個方法擺在最後面,因為成功率實在太低啦!而且目前的Server狀況又是無法停機太久的情形,我採用Appcmd的方式修改

2008不像2008R2一樣有UI介面可以調整,如果直接修改權限上又會有問題。

所以這裡用最原始微軟提供的Appcmd工具來修正,就可以避免權限上的問題

第一種方法:將IIS上的config都備份出來,修改完後再將config還原回去

執行前都須將IIS服務停用,待修改完成後再將服務啟用!

appcmd.exe list backup
appcmd.exe add backup 備份檔名稱
appcmd.exe restore backup 備份檔名稱
appcmd.exe delete backup 備份檔名稱
appcmd.exe backup /?

第二種方法:直接用appcmd修改目前的config

appcmd.exe set config “Default Web Site/test” -section:requestFiltering -requestLimits.maxAllowedContentLength:2097152000 -commitpath:apphost

Note: Default Web Site指站台,test指虛擬目錄

IIS7.x for Windows Server 2008 R2

※ASP上傳限制同Server2003

※一般檔案上傳限制

  1.  開啟IIS,在目錄或站台下開啟 “設定編輯器”的功能頁
  2. 選取下拉區段appSettings/system.webServer/security/requestFiltering
  3. 展開requesLimits;maxAllowedContentLength=數值
  4. 重啟IIS服務

ps: IIS的數值單位都是bytes
2097152000 = 2000MB * 1024 * 1024 bytes

參考資料:
http://technet.microsoft.com/zh-tw/library/cc772200%28v=ws.10%29.aspx
http://ektrontek.blog.ithome.com.tw/post/2412/125448
http://www.airuanw.com/article/ar982.html

Exit mobile version