امکان اندازه گیری دقیق حجم ViewState در برنامههای ASP.NET WebForms وجود دارد (
+) ، اما خوب، این روش یک ایراد مهم هم دارد. چند نفر حاضرند تمام صفحات خود را ویرایش کرده و ارث بری ذکر شده را پیاده سازی کنند؟
یک روش دیگر اعمال آن به تمام صفحات، استفاده از پوشهی استاندارد App_Browsers و سپس ایجاد فایلی مانند ViewStateManager.browser میباشد:
<!--Applies to all pages-->
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.Page" adapterType="ViewStateManagerCore.SomeClass" />
</controlAdapters>
</browser>
</browsers>
به این صورت ارث بری مورد نظر به صورت خودکار بر روی تمام صفحات اعمال خواهد شد.
علاوه بر این دو روش (ارث بری دستی و ارث بری خودکار)، افزونهای هم برای فایرفاکس جهت نمایش حجم ViewState صفحات طراحی شده است که از آدرس زیر قابل دریافت میباشد :
این موضوع چه اهمیتی دارد؟
ممکن است کاربران سایت شما گاهی از اوقات در بعضی از صفحات با خطای "Validation of viewstate MAC failed" مواجه و متوقف شوند. عموما حجم بالای ViewState این مشکل را درست میکند. حجم ViewState بالا است (چند صد کیلوبایت ...)، صفحه دیر رندر میشود یا هنوز کامل نشده، شخص صفحه را متوقف میکند. ASP.NET در این حالت اجازهی ارسال اطلاعات از این صفحهی ناقص را به دلایل امنیتی نمیدهد که خوب است (شاید جعل شده باشد؟).
پ.ن.
راه حل پیشنهادی مایکروسافت جهت حل این مشکل (شروع شده از سال 2007)، ارتقاء برنامههای شما به ASP.NET MVC میباشد :)