PDA

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



Mostafa_Sabeti
دوشنبه 05 مهر 1389, 16:22 عصر
سلام بر شما
من یک صفحه 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, 16:29 عصر
این خطا حاصل یک باگ در .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">

usef64
چهارشنبه 23 فروردین 1391, 15:32 عصر
سلام.
بچه ها منم اين خطا رو داشتم. وقتي اين كد را در web.config گذاشتم، از اين خط خطا گرفت.:ناراحت:

clover
چهارشنبه 23 فروردین 1391, 16:20 عصر
این خطا حاصل یک باگ در .net framework 2 هستش.
با تشکر از شما، باگ نمیشه بهش گفت، می تونیم بگیم مشکل


بچه ها منم اين خطا رو داشتم. وقتي اين كد را در web.config گذاشتم، از اين خط خطا گرفت.
غیر فعال کردن یا استفاده از یک MachineKey مشترک ممکنه امنیت وب سایتتون رو پایین بیاره، از این ابزار استفاده کنید:
http://aspnetresources.com/tools/machineKey

در ضمن این خط باید درون سکشن system.web قرار بگیره و به تنهایی کافی هست، نیازی به تغییر سکشن pages نیست.

موفق باشید

usef64
پنج شنبه 24 فروردین 1391, 12:18 عصر
ببینید من درست متوجه شدم:
توی این آدرسی که دادید، روی دکمه Generate Key کلیک کنم و کدی رو که میده، داخل web.config ام کپی کنم؟همین؟

یه سوال دیگه:
اگه بخوام از همون enableViewStateMac="false استفاده کنم، دقیقا کجا باید این دستور رو بنویسم؟و چرا امنیت رو میاره پایین؟

clover
پنج شنبه 24 فروردین 1391, 14:21 عصر
داخل web.config ام کپی کنم؟همین؟
داخل سکشن <system.web>


اگه بخوام از همون enableViewStateMac="false استفاده کنم، دقیقا کجا باید این دستور رو بنویسم؟
داخل سکشن <system.web> این رو اضافه کنید

<
<pages enableViewStateMac="false" />



و چرا امنیت رو میاره پایین؟
خب خیلی ساده شما اعلام می کنید که نیازی به رمزگذاری ViewState ندارید در حالی که ممکنه شامل اطلاعات مهمی باشه.

در این آدرس به صورت کامل توضیح داده شده:
http://msdn.microsoft.com/en-us/library/ff649308.aspx