在web.config設定aspnet:MaxHttpCollectionKeys居然沒有用? 那是那裡的問題呢? 原來asp.net 1.1是要在機碼中設定!
今天同事問說程式發生以下的錯誤,
at System.Web.HttpValueCollection.FillFromEncodedBytes <System.InvalidOperationException> 由於該物件目前的狀態,導致作業無效。
at System.Web.HttpRequest.FillInFormCollection <System.Web.HttpException> URL 編碼型式資料無效。
網路上說是要在web.config裡加入下列設定以提升POST參數的數量(預設是1,000個),
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="2500" />
</appSettings>
但是設定了卻沒有用!
後來筆者發現它是ASP.NET 1.1的程式,所以那個設定需要寫在機碼之中,如下(from http://support.microsoft.com/kb/2661403/zh-tw),
注意 如果您是在 x86 系統上使用 ASP.NET 1.1,請將 DWORD 值新增到下列登錄機碼來調整此設定:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
如果您是在 x64 系統上使用 ASP.NET 1.1,請將 DWORD 值新增到下列登錄機碼來調整此設定:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
參考資料
具有大量表單金鑰、檔案或 JSON 裝載成員的 ASP.NET 請求失敗,並產生例外狀況
ASP.NET 發現重大資安弱點影響範圍涵蓋 ASP.NET 1.1 ~ 4.0
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^