عنوان:

‫رفع مشکل postBack در Master Page و دریافت خطای Operation is not valid due to the current state of the object


نویسنده: حسین صفدری
تاریخ: ۱۳۹۲/۰۵/۰۸ ۱۸:۳۵
آدرس: www.dntips.ir
با این خطا هنگامی مواجه شدم که در Master Page  یک TextBox و یک دکمه قرار داده بودم و در رویداد دکمه به یک صفحه دیگر انتقال پیدا می‌کردم. کد زیر:
protected void imgBtnSearch_Click(object sender, ImageClickEventArgs e)
        {
            if (TxtbSearch.Text != string.Empty)
            {
                Response.Redirect("/Exhibition/ShowSearch.aspx?title=" + 
                      Sanitizer.GetSafeHtmlFragment(TxtbSearch.Text) + "&b=true", false);
            }
        }
این کد در ماشین خودم کار می‌کرد و مشکلی نداشت. وقتی پروژه را به سرور انتقال می‌دادم و بر روی IIS 6 تست می‌کردم خطای 404 دریافت می‌کردم. ضمن اینکه به صفحه خواسته شده انتقال پیدا نمی‌کردم، و همه چیز کاملا گیج کننده بود. وقتی صفحه را از خود سرور باز و رویداد فوق را اجرا می‌کردم خطای Operation is not valid due to the current state of the object دریافت می‌کردم به همراه کد زیر در Track trace به شرح زیر:
at System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded()
at System.Web.HttpValueCollection.FillFromEncodedBytes(Byte[] bytes, Encoding encoding)
at System.Web.HttpRequest.FillInFormCollection()
با افزودن کد زیر در Web.config مشکل برطرف گردید.
<appSettings>
    <add key="aspnet:MaxHttpCollectionKeys" value="2001" />
  </appSettings>
منابع:
Code Project
stack overflow

نظرات

  • محسن خان در ۱۳۹۲/۰۵/۰۸ ۱۸:۴۷
    این مشکل زمانی به وجود میاد که تعداد انبوهی کنترل روی صفحه داشته باشید. ساختار صفحه شما به چه صورتی است؟ (کابین کنترل خلبان؟!)
    • حسین صفدری در ۱۳۹۲/۰۵/۰۸ ۱۹:۲
      :D نه بابا!
      گفتم در master Page و صفحه اول سایت.شامل منو، 3 تا repatear (تبلیغات، اخبار) و چندین باکس دیگه...
      • محسن خان در ۱۳۹۲/۰۵/۰۸ ۲۰:۴۶
        مشکل وب فرم‌ها اینه که کل صفحه رو یک فرم درنظر می‌گیره. بنابراین موقع postback به سرور تمام صفحه رو ارسال می‌کنه که ممکنه سنگین باشه. در MVC می‌تونید در یک صفحه چندتا فرم داشته باشید با محدوده‌های عملکرد کوچک‌تر.
  • مهدی سعیدی فر در ۱۳۹۲/۰۵/۰۸ ۲۰:۳۸
    خیلی ممنون بابت این نکته.
    ولی دیگه سعی کنید که کوچ کنید به MVC. تو وب فرم آدم نمیدونه تو وب هست یا ویندوز فرم. یک وب مصنوعی.
    • حسین صفدری در ۱۳۹۲/۰۵/۰۸ ۲۲:۷
      چشم، مرسی نکات زیبایی دوستان گفتند، ولی راستش این پروژه برای 2 سال پیش بود، امروز به دلایلی یه گزینه جستجو اضافه کردم و باقی ماجرا ;-)