توضیحات مربوط به ViewState

 

همانطور که می دانید کلیه viewstate ها در صفحه به صورت رمز شده ذخیره می شوند هر برنامه دات نت در ابتدای اجرا یک کلید برای رمز کردن و رمزگشایی viewstate ها به صورت اتفاقی ایجاد می کند حال اگر برنامه شما بیش از حد idle باشد پروسس برنامه بسته و در نتیجه این کلید نیز پاک می شود بعد از این اتفاق اگر به همان صفحه برنامه مراجعه شود یک کلید دیگر ایجاد می شود ولی امکان رمزگشایی viewstate با آن کلید وجود ندارد چون با کلید دیگری رمز شده است. در سرورهای دیگر چون همه سایتها از یک application pool استفاده می کنند احتمال idle شدن بیش از حد خیلی کم است (در این صورت باید همه سایتهای روی سرور به مدت 20 دقیقه idle باشند) ولی چون ما به هر سایت یک application pool اختصاصی می دهیم در صورتی که برنامه شما 20 دقیقه idle باشد کل application pool نیز idle بوده و recycle می شود راه حل استفاده از کلید ثابت می باشد که برای این کار می توان یک خط به شکل زیر به web.config اضافه کرد برای اطلاع از مقادر کلیدها در گوگل سرچ کنید

<machineKey validationKey="xxxxxxx" decryptionKey="yyyyyyyy" validation="SHA1"/>

لازم  است تکه کد مورد نظر را در تگ <system.web> قرار دهید