ASP.NET 在處理 HTTP POST 要求時最多只能接受 1,000 個參數,一般來說不會有人透過 POST 傳遞表單資料超過 1,000 個欄位 ( 以筆者的經驗來說,傳過最多的一次是 700 個欄位,當時是個問卷系統 ),如果傳數參數超過 1,000 筆的話,就會出現
Operation is not valid due to the current state of the object. (英文) 或
由於該物件目前的狀態,導致作業無效。 (中文) 例外狀況,細部的例外訊息會有
HttpException (0x80004005): The URL-encoded form data is not valid. (英文) 或
HttpException (0x80004005): URL 編碼型式資料無效。
參考:
http://blog.miniasp.com/post/2012/01/01/Efficient-Denial-of-Service-Attacks-on-Web-Application-Platforms.aspx
解:
web.config加下面這個設定
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>