'maxAllowedContentLength' 搜索網誌文章共有 1
Category : ASP & ASP.net
Reg Date : 2008/11/25 19:00

這幾天有機會處理一個上傳的功能。Windows 2008 Server + IIS 7。

由於平時我們不會上傳很大的檔案, 但是這次是處理上傳影音檔。並且客戶可能會上傳高達 500 mb 的影音。自己測試當然就只會找個 50 kb 的檔來測, 什麼問題都沒有。沒有想到一上線就馬上出包。一開始是 5 mb 的檔案不能上傳。出現 500-100 錯誤。小問題嘛, 直接在 web.config 檔中增加粗體的部分就解決了。


executionTimeout 單位是秒
maxRequestLength 單位是 kb

直接將 maxRequestLength 設為 500 mb, 逾時設 30 分鐘。應該可以了吧...果然自己上傳個 20 mb 都沒有問題。又交貨了...輕鬆愉快......

隔天, 上傳又失敗了...超過 30 mb 的檔直接跳 404 的錯誤。404 是找不到網頁也, 有沒有搞錯, 網頁明明就在那。於是只好開始找 Google 大師求助。找到很久, 果然找到一個印度的工程師(印度軟體工程果然強呀)提供的解決方案。總算真正解決這個問題了。

這方法要進入命令提示字元 Dos 模式來操作。看不懂也沒有關係。會換粗斜體的那個字就可以了。以下方法只適用在 Windows Server 2008 喲。

1. 以總管理者 Administrator 身份開啟命令提示字元。如不是 Administrator 請在命令提示字元上按右鍵點執行身份來切換。
2. 輸入 cd c:\Windows\systems32\inetsrv 後按 Enter
3. 輸入 appcmd set config "SiteName/AppName" -section:requestFiltering -requestLimits.maxAllowedContentLength:102400000 -commitpath:apphost 後再按下 Enter。

maxAllowedContentLength 預設值是 30 mb。單位是 bite。

如果想要取得當前的設定值, 可以用 list config 的方式取得如下:
appcmd list config "SiteName/AppName" -section:requestFiltering

appcmd 的相關使用方式, 可以利用 appcmd -? 或 appcmd config -? 或 appcmd list config -? 等方式取得。


學海無涯呀...看來 2008 Server 也要找點時間了解一下才行了。

  , , , , , ,
 0   0