對象的當前狀態使該操作無效


微軟在2011年12月29號發布的2011年最后一個更新讓哥哥為程序出現的異常頭痛了一天. 這個異常在頁面數據量小的時候並不會觸發,只在頁面數據量大的情況下才會出現,開始解決起來讓人無從下手,最后才發現貓膩.

異常信息如下:

對象的當前狀態使該操作無效。 
說明: 執行當前 Web 請求期間,出現未處理的異常。請檢查堆棧跟蹤信息,以了解有關該錯誤以及代碼中導致錯誤的出處的詳細信息。 

異常詳細信息: System.InvalidOperationException: 對象的當前狀態使該操作無效。

源錯誤: 

執行當前 Web 請求期間生成了未處理的異常。可以使用下面的異常堆棧跟蹤信息確定有關異常原因和發生位置的信息。 
堆棧跟蹤: 


[InvalidOperationException: 對象的當前狀態使該操作無效。]
  System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded() +2692482
  System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding) +61
  System.Web.HttpRequest.FillInFormCollection() +148

[HttpException (0x80004005): URL 編碼窗體數據無效。] 

...

解決方法如下: 

   Author:    

 Hi i found the solution, it is due to the recent Microsoft security update we are getting this error. Seems they have added a new method called 'ThrowifmaxhttpkeycollectionKeysexceeded' with default value 1000, which means postback can contain only 1000 items.


Just add the following to your web.config(2.0 and above)

<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>

 

ThrowIfMaxHttpCollectionKeysExceeded()
問題在這里.
出現這個異常的原因正是因為上年12月29號那次微軟發布的最后一次非正常更新程序引起的.在這次安全更新中對於asp.net單次的提交量做了一個最大量限制1000,出現這個異常正是因為頁面提交量超過了1000這個限制.這個可以在web.config中增加參數來更改:
<appSettings>
<add key="aspnet:MaxHttpCollectionKeys" value="5000" />
</appSettings>

 

 吭爹的微軟


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM