在架設Server的時候常會需要讓使用者上傳檔案,除了在code上限制以外,IIS也有他本身的限制
這篇提到 IIS6、IIS7.x的設定方式
IIS6 for Windows Server 2003
※ASP上傳限制
- 停止IIS Admin Service服務
- 記事本開啟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的方式修改
- Appcmd-IIS內建的工具
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
※一般檔案上傳限制
- 開啟IIS,在目錄或站台下開啟 “設定編輯器”的功能頁
- 選取下拉區段appSettings/system.webServer/security/requestFiltering
- 展開requesLimits;maxAllowedContentLength=數值
- 重啟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