PDA

View Full Version : مقاله:: بررسی مشکلات اجاکس و راه حل ان



hamedgh
یک شنبه 23 دی 1386, 13:21 عصر
سلام به دوستان
من بعد برخورد به مشکلات زیاد در اجرای ان روی سرور و حل انها بران شدم تا برای دوستان
که اگر به این مشکلات که تقربیا باگ های ان هستند راه حل رفع ان را بنویسم

یک :: خطای sys is undefined
اول یک کمی در مورد پس زمینه کار که چه اتفاقی می افتد توضیج می دهم
وقتی که شما ScriptManager برروی صفحه قرار می دهید ASP.NET AJAX
کمی script برای بارگزاری در صفحه تولید می کند و مقداری script داخلی برای
شروع و اجرای برنامه
اگرشما سورس برنامه را ببیند شما چیزی شبیه این خواهید دید

<script type="text/javascript">
Sys.WebForms.PageRequestManager._initialize('Scrip tManager1', document.getElementById('form1'));
Sys.WebForms.PageRequestManager.getInstance()._upd ateControls([], [], [], 90);
</script>
وقتی مروگر می خواهد این کد را اجرا کند انتظار دارد کد Sys.WebForms.PageRequestManager
جای تعریف شده باشد جایی که این کد را تعریف کرده و بارگزاری می کند
چیزی شبیه این است

<script src="/MyWebApp/ScriptResource.axd?[snip - long query string]" type="text/javascript"></script>

اگر برنامه نتواند این را بارگزاری کند
script engine نمی تواند این مشخصات را پیدا کند
Sys, Sys.WebForms, Sys.WebFormsPageRequestManager
درنتیجه برنامه این خطا را سبب می شود

حالا چرا مرورگر نمی تواند این مشخصات را بارگزاری کند؟ چند دلیل دارد ؟؟

1- مرورگر نمی تواند compressed script را بارگزاری کند

این خطا بیشتر در IE6 روی می دهد چگونه ان را تعمیر کنیم ؟؟
وب کانفیگ را به این صورت تغییر می دهید

<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="false" enableCaching="true" />
</scripting>
</system.web.extensions>

2- وب کانفیگ به خوبی پیکربندی نشده است

شما وب کانفیگ قرار داده شده در این قسمت را با وب کانفیگ خود مقایسه کنید
-C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025
و تغییرات را اعمال کنید

4- خطای 404 به خاطر ScriptResource.axd

برای برطرف کردن این خطا شما کد زیر را در سرور اجرا می کنید

C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727. aspnet_regiis -i -enable

راه حل بعدی برای اینکار webresource.axdو ScriptResource.axd
یه حجم 0 کیلو بایت درست کنی در root بگذاری
به همین راحتی خطای فوق برطرف می شد

در قمست دوم مقاله یکی از باگهای اجاکس را بررسی می کنیم

موفق باشید ......

mehrdad201
یک شنبه 23 دی 1386, 18:24 عصر
دوست عزیز شرمندم اما یک سوال داشتم.

حالا که حرف از scriptmanager شد میشه بگید چطوری میشه یه تابع جاوا اسکریپت رو به وسیله scriptmanager از سمت سرور فراخوانی کرد؟!!!!!

hamedgh
یک شنبه 23 دی 1386, 18:53 عصر
یعنی چی ؟؟؟
ازسمت سرور می خواهی کدی در کلاینت اجرا کنی مگر از سرور هم به کلاینت دسترسی هست
هر درخواستیر باید از سمت کلاینت فرستاده شود
اگر مشکلی در این زمینه داری در در یک تاپیک جداگانه بگو بخش دوم مقاله می خواهم بگذارم

mp2009
یک شنبه 23 دی 1386, 19:28 عصر
تایپک جالبی میشه . لطفا مطالب بیشتری در مورد اجاکس و خطاهای اون بنویسید.
موفق باشید

hamedgh
یک شنبه 23 دی 1386, 19:30 عصر
2- خطای Sys.WebForms.PageRequestManagerParserErrorExceptio n چیست و چگونه از ان دوری کنیم ؟؟؟
اگر شما از Microsoft ASP.NET AJAX (http://ajax.asp.net/) UpdatePanel (http://ajax.asp.net/docs/tutorials/UpdatePanelTutorials.aspx) به احتما ل زیاد با این مشکل بر می خورید
متن کامل خطا به شرح زیر است

---------------------------
Microsoft Internet Explorer
---------------------------
Sys.WebForms.PageRequestManagerParserErrorExceptio n: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.در حالت کلی این خطا ان قدر هم بد نیست
شاید ....
چون به نظر می اید به خاطر خطای برنامه نویسی که در زیر مثال ان امده است
باشد

1- نوشتن Response.Write(): یا Response filters و استفاده از HttpModules
و یا server trace فعال باشد و Server.Transfer
برای دوری از خطا عدم استفاده از موارد بالا می باشد

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

این باگ ورژن 1 اجاکس است که مهندسان مایکروسافت قول بر طرف کردن
ان را در نمونه های بعدی دادند
کجا بیشتر این خطا به دور از انتظار ما رخ می دهد؟؟؟؟
وقتی که از کنترل های داینامیک استفاده می کنیم
مثل یک Button درسطر های گرید ویو که بطور داینامیک ساخته می شود از عوامل شایع این
خطا می باشد
راه حل چیست ؟؟؟؟؟؟؟

راه حل موقتی اگر Role Provider استفاده می کنید
این را به ان اضافه کنید cacheRolesInCookie="false"
و این را به صفحاتی که updatepanel استفاده می کنیم اضافه می کنیم
EventValidation="false"
مشکل حل می شو د

دوستان اگر به خطای برخورد کردند و راه حلی برای ان یافتن برای کامل شدن بحث ان را ادامه مطالب زیر بنویسند

موفق باشید .....

m.hamidreza
یک شنبه 23 دی 1386, 19:52 عصر
من تا حالا به هیچ کدوم از این Error هایی که گفتی تو این 6و7 ماه رو سرور برخورد نکردم ! :لبخندساده: چرا ؟! :متفکر: نمیدونستم اینقدر مشکلات هم هست ! :گیج: پروژه شما تو چه سطحی بوده ؟ البته من فکر میکنم پشتیبانی هاست هم تو این قضیه بی تاثیر نباشه . . . البته بحث باگ ها دیگه جداست ....

hamedgh
یک شنبه 23 دی 1386, 20:52 عصر
البته من فکر میکنم پشتیبانی هاست هم تو این قضیه بی تاثیر نباشهدقیقا
مشکل از سرور بوده این اولین پروژه اجاکسی اش بوده که روی ان می رفته به خاطر همین مشکل زیاد داشت


نمیدونستم اینقدر مشکلات هم هست
بیشتر از این حرفها که فکرش را بکنی

قدر این مقاله کسی بیشتر می داند که به همچین مشکلی بر بخورد و بال بال بزند !!!!!!!!!!

scorpion_man
دوشنبه 24 دی 1386, 01:48 صبح
با سلام به همه دوستان
با تشکر از دوستمون به خاطر مقاله مفیدشون برا من یه سوال پیش اومده
چرا تا حالا هیچ سایت رسمی میکروسافت به صورت گسترده از ajax استفاده نمیکنه و اگه هم استفاده کرده فقط تو بخشهای کوچکی بوده که اصلا نادیده گرفته میشه
تنها سایت بزرگی که به صورت گسترده از تکنولوژی ajax استفاده میکنه البته نه هر جایی شرکت google هست که بیشتر از سایتهای بزرگ دیگه به این مقوله پرداخته
جوابی که به نظر میرسه فکر کنم این باشه که هنوز این تکنولوژی پختگی لازم رو نداره که تو پروژه ها بزرگ بشه به صورت وسیع ازش استفاده کرد و میشه فقط در قسمتهایی به شکل کنترل شده ازش بهره برد به هر حال تکنولوژی بسیار بزرگی هست فقط یه خورده کار بیشتری لازم داره تا بشه به صورت حرفه ای ازش استفاده کرد

m.hamidreza
دوشنبه 24 دی 1386, 15:42 عصر
البته مایکروسافت که یه کارایی کرده ، توی این email های پولی hotmail من شنیدم خیلی کشته خودشو ! آخه switch کردن اون همه صفحه ی مایکروسافت تو Ajax چیزی براش نداره ! ولی من سایت های Full َAjax خیلی تپل زیاد دیدم ولی با php هستن !

scorpion_man
دوشنبه 24 دی 1386, 23:22 عصر
البته مایکروسافت که یه کارایی کرده ، توی این email های پولی hotmail من شنیدم خیلی کشته خودشو ! آخه switch کردن اون همه صفحه ی مایکروسافت تو Ajax چیزی براش نداره ! ولی من سایت های Full َAjax خیلی تپل زیاد دیدم ولی با php هستن !



با سلام به همه دوستاندوست عزیز بنده هم خیلی سایت فول با ajax دیدم که اتفاقا asp هم توشون هست من عرض کردم سایتهای حرفه ای نه سایتهای کوچک و متوسط که هستن سایتهای بزرگ و در ضمن عرض کردم قسمتهایی از این شرکتهابا این تکنولوژی کار میکنن ولی به صورت کامل فعلا روی این تکنولوژی پیاده سازی نشدن چون واقعیتش فعلا زیاد جا افتاده نشده و اشکالات مختلفی داره ولی میشه برای load قسمتهای گرافیکی و سنگین صفحه ازش بهره برد که خیلی خوب جواب میدهموفق باشید

hamedgh
سه شنبه 25 دی 1386, 19:41 عصر
یکی از دلایلش این می تواند باشد که برای همه جا نیاز نیست
و توجیح اقتصادی برای اینکار ندارند
و اگر کسی بخواهد سایتی فول اجاکس بنویسید که نمی یاید از کامپوننت های مایکروسافت
استفاده کند که فکر کنی سریع ساخته می شود و خرجش کم می شود
در ضمن اجاکس مشکلات حل نشده بسیاری دارد

miladr
پنج شنبه 27 دی 1386, 23:48 عصر
برای sys is undefined همه راه ها رو رفتم اما صفحه رو رو یه هاست دیگه بردم کار کرد.
حالا اگه فرض کنیم مشکل از طرف سرور باشه ایا فقط همون دستور که تو پست اول بود کار رو حل می کنه؟ اگه چیز دیگه هم هست لطف کنید بگین.

hamedgh
شنبه 29 دی 1386, 14:22 عصر
یک راه حل دیگر هم هست برای همون خطای اول که یک فایل با نام
ScriptResource.axd
یه حجم 0 کیلو بایت درست کنی در root بگذاری
خطای دیگر دریافت نمی کنی

miladr
شنبه 29 دی 1386, 17:17 عصر
یک راه حل دیگر هم هست برای همون خطای اول که یک فایل با نام
ScriptResource.axd
یه حجم 0 کیلو بایت درست کنی در root بگذاری
خطای دیگر دریافت نمی کنی



راه حلی که گفتی استفاده کردم جایی که صفحه من فقط تاریخ رو میریخت تو یک textbox حل شد
اما تو صفحه که چند تا updatepanel دارم حل نشد

hamedgh
شنبه 29 دی 1386, 20:18 عصر
این دستور را روی سرور اجرا کردی
C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727. aspnet_regiis -i -enable


و webresource.axd
هم به حجم 0 کیلو بایت بگذار مشکل باید حل شود

scorpion_man
شنبه 29 دی 1386, 20:50 عصر
با سلا م به همه دوستانراستی حامد جان میشه toolkit ajax رو بدون باز کردن یه پروژه از نوع ajax enable و با add کردن dll ajax و اضافه کردن handler های اون تو پروژه استفاده کرد فکر میکنم بشه ولی تا حالا تستش نکردم یکیم اگه لطف کنی تفاوت ajax , atlas رو توضیح بدی ممنون میشم من تا حالا با atlas کار نکردم ولی تا اونجایی که تو مقالات خوندم فرق چندانی نباید بین ایندو باشه اگه لطف کنی فرقشونو توضیح بدی ممنون میشم

miladr
شنبه 29 دی 1386, 22:07 عصر
این دستور را روی سرور اجرا کردی
C:\WINDOWS\Microsoft.Net\Framework\v2.0.50727. aspnet_regiis -i -enable


و webresource.axd
هم به حجم 0 کیلو بایت بگذار مشکل باید حل شود


اجرای دستور رو سرور که من اجازش رو ندارم سرور دست من نیست.

hamedgh
یک شنبه 30 دی 1386, 09:13 صبح
اجرای دستور رو سرور که من اجازش رو ندارم سرور دست من نیست.
مگر من گفتم دست شما ست خوب به ادمین سایت زنگ بزن بهش بگو


ا سلا م به همه دوستانراستی حامد جان میشه toolkit ajax رو بدون باز کردن یه پروژه از نوع ajax enable و با add کردن dll ajax و اضافه کردن handler های اون تو پروژه استفاده کرد فکر میکنم بشه ولی تا حالا تستش نکردم یکیم اگه لطف کنی تفاوت ajax , atlas رو توضیح بدی ممنون میشم من تا حالا با atlas کار نکردم ولی تا اونجایی که تو مقالات خوندم فرق چندانی نباید بین ایندو باشه اگه لطف کنی فرقشونو توضیح بدی ممنون میشم

اطلس نمونه اولیه اجاکس بود اپدیت شده می شود همین اجاکسی که می بینی
فرقی ندارند ولی مشکلات اطلس و باگهاش بیشتر از همین اجاکس است
در مورد سوال بعدی که گفتی می شود اجاکسی کرد پروژه را
می شود ولی با تغییر وب کانفیگ مربوطه
وب کانفیگت را با وب گانفیگ دراین ادرس مطابقت بده
C:\Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025
مشکلی ندارد

mahdi_farhani
چهارشنبه 03 بهمن 1386, 10:21 صبح
این یه راه حل برای اونهایی که با قسمت Source مشکل دارن
به جای استفاده از Tag prefix asp باید اون تو وب کانفیگ عوض کنید مثلاً بزارید Ajax بعد تو صفحاتی که از کنترلهای Ajax استفاده کرده بودید اونوها را با مقدار جدید تغییر بدید دیگه مشکل عدم مرتب بودن تگها حل میشه .

el_abdollahi
چهارشنبه 03 بهمن 1386, 11:40 صبح
منظورتون tagPrefix="asp" یا tagPrefix="ajaxToolkit" .؟ و این :
مشکل عدم مرتب بودن تگها حل میشه یعنی چه ؟

chaalesh
پنج شنبه 04 بهمن 1386, 10:45 صبح
من یه سوال ابتدائی از Ajax بپرسم:
من تونستم بطور کامل اونو پیاده کرده و استفاده نمائم - روی سرور -
ولی دیگران - از یک کامپیوتر دیگه بجز کامپیوتر خودم- نمی تونستن اونو اجرا کنند!!!!!!
من اینو با رفتن به یک کافی نت خودم تست کردم dropdownlist من autopostback بود و dropdownlist بعدی رو پر میکرد ولی تو کافی نت وقتی تغییر میکرد کاری انجام نمیشد!!!!!!
برای همین از خیرش گذشتم ..
اگه کسی خطای کار منو میدونه لطفا بگه. خیلی دوست دارم با Ajax کارامو انجام بدم

hamedgh
پنج شنبه 04 بهمن 1386, 11:09 صبح
من یه سوال ابتدائی از Ajax بپرسم:
من تونستم بطور کامل اونو پیاده کرده و استفاده نمائم - روی سرور -
ولی دیگران - از یک کامپیوتر دیگه بجز کامپیوتر خودم- نمی تونستن اونو اجرا کنند!!!!!!پایین صفحه ات را نگاه کن ببین خطای جاوا اسکریپتی می دهد
اگر می دهد نام خطا را بنویس
شاید توانستیم کمکت کنیم

Nasim_m
جمعه 01 شهریور 1387, 23:07 عصر
من توی برنامه ام دقیقا به مشکلی که توی پست 1 اشاره کرده اید برخوردم با این تفاوت که برنامه من توی خود vs احرا می شود نه روی سرور. تمام راههایی هم که عرض کرده بودید انجام دادم اما مشکل همچنان باقیست.!!!!

Nasim_m
جمعه 01 شهریور 1387, 23:13 عصر
از آنجا که این مشکل به وب کانفیگ خیلی ربط داره اونم براتون فرستادم تا اگه زحمتی نیست یک نگاه بهش بندازید

el_abdollahi
چهارشنبه 06 شهریور 1387, 12:04 عصر
من هم به خطای sys is undefined برخورد کردم.
اون تگ رو به وب کانفیگ اضافه کردم. فایل scriptresource رو هم اضافه کردم ولی باز خطا میده.
در ضمن من از IE 7 استفاده میکنم.
لطفا کمک کنید.

el_abdollahi
پنج شنبه 07 شهریور 1387, 10:54 صبح
اصلا یکی بگه چرا پشت یه کامپیوتر درسته و پشت یکی دیگه کار نمیکنه؟ چرا؟

el_abdollahi
پنج شنبه 07 شهریور 1387, 11:49 صبح
آژاکس روی کامپیوتر نصب کردم درست شد. ولی نفهمیدم مشکلش از چی بود . فایل های dll رو که داشت.
اصلا دو روز پیش خوب کار میکرد ، یه دفعه اینجوری شد.:متعجب::متفکر:

Nasim_m
جمعه 08 شهریور 1387, 15:07 عصر
مشکل من با اضافه کردن یک httpHandler به وب کانفیگ حل شد
البته باید قبلش فایل ScriptResource.axd در پوشه ریشه کپی کرده باشین


<httpHandlers>
<add verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/>
</httpHandlers>

Ehsan Valinouri
سه شنبه 21 آبان 1387, 16:38 عصر
2- خطای Sys.WebForms.PageRequestManagerParserErrorExceptio n چیست و چگونه از ان دوری کنیم ؟؟؟
اگر شما از Microsoft ASP.NET AJAX (http://ajax.asp.net/) UpdatePanel (http://ajax.asp.net/docs/tutorials/UpdatePanelTutorials.aspx) به احتما ل زیاد با این مشکل بر می خورید
متن کامل خطا به شرح زیر است ...

با سلام خدمت دوستان و تشکر بابت مقاله بسیار مفیدتون.
فکر میکنم من تنها فردی هستم که با ارور کذایی شماره 2 برخورد کردم، البته جالبتر اینجاس که این ارور هنگام اجرای Local به وجود میاد.

با توجه به مطالب گفته شده من تغییرات لازم در Role Provider را دادم و همچنین EnableEventValidation صفحه را نیز False کردم. احساس میکنم ارور ها کمتر روی می دهند اما هنوز وجود دارند مثلا هنگامی که در روی اعداد بخش Pager گریدویو ها کلیک می شود گهگاه این اتفاق رخ می دهد. آیا به تنظیمات بیشتری نیاز است؟

bahman_akbarzadeh
یک شنبه 28 تیر 1388, 22:21 عصر
بزرگترين مشكل MS AJAX رو يادتون رفت بگيد :

اضافه كردن 500 كيلو بايت به حجم هر صفحه
و اما راه حل :

استفاده نكردن از Microsoft AJAX . (كاري كه خودش هم انجام ميده)

raziee
دوشنبه 29 تیر 1388, 18:35 عصر
سلام.
من AJAX 3.5 رو از سایت دانلود کردم و زمان اجرا همچین خطایی رو میده که دنبال فایل:
ScriptObjectBuilder.cs
بگرد و به برنامه اضافه کن.
در Call Stack هم :
کد:
> AjaxControlToolkit.DLL!AjaxControlToolkit.ScriptOb jectBuilder.RegisterCssReferences(System.Web.UI.Co ntrol control = {AjaxControlToolkit.HTMLEditor.Editor}) Line 311 + 0x24 bytes C#
باید چه کار کنم؟
من در این تاپیک (http://barnamenevis.org/forum/showthread.php?t=168559) هم جداگانه پرسیدم اما کسی جوابی نداشت.

IranVisual
یک شنبه 04 مرداد 1388, 16:22 عصر
ایا راهی هست که بشه مشکل آجاکس با MultiView رو حل کرد یا اینکه چجوری یه multiview رو شبیه سازی کنم

mortez maya
یک شنبه 11 مرداد 1388, 17:38 عصر
سلام.
چرا نمیشه در داخل Ajax کنترل CrystalReportViewer قرار داد ؟

mahdi_farhani
یک شنبه 11 مرداد 1388, 19:02 عصر
به خاطر اینکه یکسری اسکریپت داره که زمانی که پست بک رخ میده اونو به صفحه اضافه میشن و چون آژاکس صفحه و رفرش نمیکنه اونا هم لود نمیشند ( البته این دلیلی که من دیدم شاید دلیل علمی تری هم داشته باشه)

mortez maya
یک شنبه 11 مرداد 1388, 23:11 عصر
سلام.
آقای فراهانی عزیز در واقع مشکل اصلی اینه که وقتی کریستال ریپورت رو در داخل Update Panel قرار می دم دکمه Print کار نمی کنه. شما راه حلی برای این مشکل دارید ؟

homoface
پنج شنبه 11 شهریور 1389, 15:51 عصر
سلام دو ستان من یک مشکلی با timer دارم تایمری که برای آپ کردن آپ پانل گذاشتم باعث میشه که وقتی می خوام صفحه رو ببرم بالا یا پایین صفحه رو بر میگردونی تو جایی که آپ پانل قرار داره یک جورایی کل صفحه آپ می شه یا تیک میندازه مثلا وقتی یک تکس باکس دارم که کنترل MaskedEditValidator1 روش سواره تا فقط عدد توش وارد شه وقتی می خوام عدد وارد کنم عداد پاک میشه یا از داخل تکس باکس خارج میشه
اگر کسی می دونه مشکل من رو واقعا ممنون میشم کمک کنه البته یک تایمر هم تو مستر پیج دارم

hosein18242
پنج شنبه 11 شهریور 1389, 21:17 عصر
باسلام خواهشا يكي كمكم كنه يكي از مشكلات اساسي بنده اينه كه منASPAJAXExt رو نصب كردم و همچنين dll مربوط به ajax toolkit رو دانلود كردم و به toolbox من اضافه شد در ضمن از vs2008 استفاده ميكنم ولي زماني كه از ajaxاستفاده ميكنم با اين error مواجه ميشه؟؟؟
Could not load type 'System.Web.UI.ScriptReferenceBase' from assembly 'System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.


و اينم بگم يه جا تو سايت ajax خوندم زماني كه extenssions رو نصب ميكني بايد به مسير زير بري
File" menu, clicking "New", "Web Site...", and picking "ASP.NET AJAX Web Site" under "My Templates"
در صورتي كه بعد از نصب extensions اين گزينه ASP.NET AJAX Web Site به my templates اضافه نميشه ؟؟؟؟كمك كنيد نميدونم مشكل از كجاست چون زماني كه كليه sample هاي toolkit رو از سايت ajax دانلود كردم كه به همراه سورسش بود تمامي كنترهاي آجاكس تو اون سورس دانلود شده درست كار ميكنه واقعا گيج شدم ؟؟؟؟؟؟؟؟؟اساتيد كمك كنن آيا با vs2008 مشكل داره يا؟؟؟؟؟:اشتباه::اشتباه: يه جا تو سايت microsoft به اين ادرس
http://www.microsoft.com/downloads/d...displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en)
زده كه براي اين كار بايد update كني vs2008 sp1 بايد روش نصب كني اينم دانلود كردم ولي بعد از دانلود موقع نصب مجددا بايد از اينترنت update كنه كه حجمش خيلي زياده آيا بيرون ميتونم تهيه كنمش اگه اين نصب شه مشكلم حل ميشه يا بازم ازين نيست؟؟؟؟؟؟؟؟