۱۳۸۹/۱۰/۱۹

نمايش حجم ViewState برنامه‌هاي ASP.NET WebForms


امكان اندازه گيري دقيق حجم 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 مي‌باشد :)