2012-01-12 10 views
164

के दौरान ऑब्जेक्ट की वर्तमान स्थिति के कारण ऑपरेशन मान्य नहीं है, मेरे पास एक एएसपीएक्स पेज था जो अच्छी तरह से काम कर रहा था, लेकिन अचानक मुझे त्रुटि मिल रही है "ऑब्जेक्ट की वर्तमान स्थिति के कारण ऑपरेशन मान्य नहीं है । " जब भी एक पोस्टबैक किया जाता है।'पोस्टबैक

स्टैक ट्रेस है:

System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()
System.Web.HttpValueCollection.FillFromEncodedBytes पर (बाइट [] बाइट्स, एन्कोडिंग एन्कोडिंग) सिस्टम पर
पर। Web.HttpRequest.FillInFormCollection()

क्या कोई मदद कर सकता है?

+0

संभव डुप्लिकेट: मैं कैसे कर सकते हैं पोस्ट फॉर्म मानों की अधिकतम संख्या पर सीमा बदलें?] (http://stackoverflow.com/questions/8684049/asp-net-ms11-100-how-can-i-change-the-limit-on-the- अधिकतम संख्या-के-पोस्ट-पोस्ट) – FatalError

उत्तर

276

किसी ने आपके पृष्ठ पर कुछ फॉर्म फ़ील्ड पोस्ट किए हैं। हालिया सुरक्षा अद्यतन द्वारा पेश किया गया नया डिफ़ॉल्ट अधिकतम 1000 है।

अपने web.config के <appsettings> ब्लॉक में निम्न सेटिंग जोड़ने का प्रयास करें। इस ब्लॉक में आप MaxHttpCollection मानों को अधिकतम कर रहे हैं, यह .NET Framework द्वारा निर्धारित डिफ़ॉल्ट ओवरराइड करेगा। आप तदनुसार मूल्य बदल सकते हैं आपके प्रपत्र के अनुसार की जरूरत है

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

अधिक जानकारी के लिए this पोस्ट पढ़ें। माइक्रोसॉफ्ट द्वारा सुरक्षा पैच में अधिक अंतर्दृष्टि के लिए आप this Knowledge base article

+3

http://technet.microsoft.com/en-us/security/advisory/2659883 – Adam

+1

http: //www.acumen-corp।कॉम/ब्लॉग/tabid/298/EntryId/8/एएसपी-NET-त्रुटि-ThrowIfMaxHttpCollectionKeysExceeded.aspx – Soenhay

37

मैंने अपने ग्रिडव्यू पर पेजिंग लागू नहीं किया है और यह 600 से अधिक रिकॉर्ड (चेकबॉक्स, बटन इत्यादि के साथ) तक बढ़ा है और 2001 के मूल्य ' टी काम नहीं आप मूल्य बढ़ा सकते हैं, 10000 और परीक्षण कहें।

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

ASP.NET 1.1 के लिए, यह अभी भी किसी को 1000 से अधिक प्रपत्र फ़ील्ड्स पोस्टिंग की वजह से है, लेकिन सेटिंग एक कॉन्फ़िग फ़ाइल रजिस्ट्री के बजाय में परिवर्तित किया जाना चाहिए। यह

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0 

Windows के 64-बिट संस्करणों के लिए Windows का 32-बिट संस्करणों के लिए

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0 

के तहत रजिस्ट्री में एक DWORD नामित MaxHttpCollectionKeys के रूप में शामिल किया जाना चाहिए, और।

4

यदि आपका स्टैक ट्रेस लग रहा है उसके बाद निम्न है सर्वर

Operation is not valid due to the current state of the object. 
    at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeDictionary(Int32 depth) 
    at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth) 
    at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer) 
    at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit) 
    at System.Web.Script.Serialization.JavaScriptSerializer.DeserializeObject(String input) 
    at Failing.Page_Load(Object sender, EventArgs e) 
    at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) 
    at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) 
    at System.Web.UI.Control.OnLoad(EventArgs e) 
    at System.Web.UI.Control.LoadRecursive() 
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

को json वस्तुओं की एक बड़ी लोड भेज रहे हैं संकल्प के लिए, निम्न कुंजी के साथ अपने वेब config अपडेट करें। यदि आप स्टैक ट्रेस प्राप्त करने में सक्षम नहीं हैं तो कृपया fiddler का उपयोग करें। यह अभी भी तो मदद नहीं करता है तो 10000 या कुछ

<configuration> 
<appSettings> 
<add key="aspnet:MaxJsonDeserializerMembers" value="1000" /> 
</appSettings> 
</configuration> 

अधिक जानकारी के लिए करने के लिए संख्या में वृद्धि करने का प्रयास करें, कृपया इसे पढ़ें this माइक्रोसॉफ्ट केबी लेख

[ASP.NET MS11-100 की