পোস্টব্যাকের সময় ত্রুটির কারণে 'অবজেক্টের বর্তমান অবস্থার কারণে অপারেশন বৈধ নয়'


170

আমার একটি এসপেক্স পৃষ্ঠা ছিল যা ভাল কাজ করছে, তবে হঠাৎ করেই আমি ত্রুটিটি পাচ্ছি "অবজেক্টের বর্তমান অবস্থার কারণে অপারেশন বৈধ নয়।" যখনই কোনও পোস্টব্যাক করা হয়।

স্ট্যাক ট্রেসটি হ'ল:

System.Web.HttpRequorn.Fill (
ফ্রিফ্র্যামইনকোডবিটস (বাইট [] বাইটস, এনকোডিং)
এ সিস্টেম.ওয়েব.এইচটিপিভ্যালিউ কালেকশন.ট্রোআইফ্যাক্সএক্সটিএইচপিপি কালেকশনকিজএক্সসিডেড ()।

কেউ সাহায্য করতে পারেন?


উত্তর:


281

কেউ আপনার পৃষ্ঠায় বেশ কয়েকটি ফর্ম ক্ষেত্র পোস্ট করেছে। সাম্প্রতিক সুরক্ষা আপডেটের মাধ্যমে প্রবর্তিত নতুন ডিফল্ট সর্বোচ্চটি 1000 টি 1000

আপনার ওয়েব.কমফিগের <appsettings>ব্লকে নিম্নলিখিত সেটিংটি যুক্ত করার চেষ্টা করুন । এই ব্লকে আপনি ম্যাক্সএইচটিপি কালেকশন মানগুলি সর্বাধিক করে তুলছেন এটি। নেট ফ্রেমওয়ার্ক দ্বারা সেট করা ডিফল্টগুলিকে ওভাররাইড করবে। আপনি নিজের ফর্মের চাহিদা অনুযায়ী মানটি পরিবর্তন করতে পারেন

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

আরও তথ্যের জন্য এই পোস্টটি পড়ুন দয়া করে । মাইক্রোসফ্ট দ্বারা সুরক্ষা প্যাচ আরও অন্তর্দৃষ্টি জন্য আপনি এই জ্ঞান বেস নিবন্ধটি পড়তে পারেন



40

আমি আমার গ্রিডভিউতে পেজিং প্রয়োগ করি নি এবং এটি 600 এরও বেশি রেকর্ড (চেকবক্স, বোতাম ইত্যাদির সাহায্যে) পর্যন্ত প্রসারিত হয়েছে এবং 2001 এর মান কার্যকর হয়নি। আপনি মান বৃদ্ধি করতে পারেন, 10000 বলুন এবং পরীক্ষা করুন।

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

16

ASP.NET 1.1 এর জন্য, কেউ এখনও 1000 টিরও বেশি ফর্ম ক্ষেত্র পোস্ট করার কারণে রয়েছে তবে সেটিংসটি কনফিগার ফাইলের পরিবর্তে রেজিস্ট্রিতে পরিবর্তন করতে হবে। এর অধীনে রেজিস্ট্রিতে এটি ম্যাক্সএইচটিএপপলকলেশনকিস নামে একটি ডিডাব্লুর্ড হিসাবে যুক্ত করা উচিত

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0

উইন্ডোজ 32-বিট সংস্করণ জন্য, এবং

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

উইন্ডোজের -৪-বিট সংস্করণের জন্য।


6

যদি আপনার স্ট্যাক ট্রেসটি অনুসরণ করে দেখে মনে হচ্ছে তবে আপনি সার্ভারে একটি বিশাল পরিমাণ জসন বস্তু প্রেরণ করছেন

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)

সমাধানের জন্য, দয়া করে নিম্নলিখিত কী সহ আপনার ওয়েব কনফিগারেশন আপডেট করুন। আপনি যদি স্ট্যাক ট্রেস পেতে সক্ষম না হন তবে অনুগ্রহ করে ফিজার ব্যবহার করুন । এটি যদি এখনও সহায়তা না করে তবে দয়া করে সংখ্যাটি 10000 বা কিছুতে বাড়ানোর চেষ্টা করুন

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

আরও তথ্যের জন্য, দয়া করে এই মাইক্রোসফ্ট কেবি নিবন্ধটি পড়ুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.