PDA

View Full Version : سوال: Validation of viewstate MAC failed. برای چه این خطا گرفته میشه؟؟؟



Mostafa_Sabeti
دوشنبه 05 مهر 1389, 17:52 عصر
سلام بر شما
من یک صفحه asp.net دارم که شامل چهار بخش div هست.
که به صورت گام به گام تعدادی اطلاعات را از کاربری گرفته و داخل یک دیتابیس ذخیره میکند.
کاربر با وارد کردن اطلاعات هربخش و زدن دکمه بعدی بعد از چک شدن اطلاعات وارد شده وارد صفحه بعد میشود (با جاوااسکریپت این کار انجام میگیره)
مشکل اینه که وقتی کاربر به بخش آخر رسیده و دکمه ثبت را زده (که فقط دکمه اخر یعنی ثبت تحت سرور است runat=server) خطای زیر ظاهر میشود:

Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

البته نه همیشه. هر از چندگاهی این خطا ارسال میشه ان هم روی فضای اینترنت نه وقتی روی کامپیوتر خودم (کلاینت) برنامه را امتحان میکنم.

amirjalili
دوشنبه 05 مهر 1389, 17:59 عصر
این خطا حاصل یک باگ در .net framework 2 هستش.
در صورتی به این خطا برخورد خواهید کرد که :

* از SqlDataSource در اون صفحه استفاده کرده باشید
* استفاده از <asp:BoundField> در گرید
*استفاده ازDataKeyNames در GridView
راه حل ها:
1:
در فایل web.config خط زیر را وارد نمایید.
<system.web>
<pages enableViewStateMac="false" />
</system.web>
پنجره مرورگر خودتون رو را بسته و یکبار دیگر باز کنید.مشکل برطرف خواهد شد.
2:
ابتدا تگ زیر را به web.config اضافه کنید :


<machineKey validationKey="A96B2F3BF50A1A2A1B81214A550B89F2A318B3712FB5AC8CD8 2AF4F3925B3C6ED58CF5F38503629A78BF8C27B1B736C4E84D ACE342AB83A42932B44EBC3D7601" decryptionKey="D01201C69DF5E9863133028CBD4E6EEFC45B5E609D7F4107" validation="SHA1" />


سپس تگ pages را به صورت زیر تغییر دهید :


<pages enableViewStateMac="true" enableEventValidation="true" viewStateEncryptionMode="Always">