PDA

View Full Version : سوال: کار نکردن response.redirect بعد از publish بر روی سرور



صنم
یک شنبه 28 مهر 1387, 10:27 صبح
سلام من یک برنامه تحت وب با Asp.net دارم . در صفحه login از کد زیر برای رفتن به صفحه مورد نظر استفاده می کنم :


Response.Redirect(Context.Request.ApplicationPath + "/admin%20pages/user/deluser.aspx", true);

این کد در حالت local درست کار می کند ولی وقتی بر روی سرور publish می کنم و فایل dll صفحات ساخته می شود پیغام میدهد که صفحه deluser.aspx را نمی تواند پیدا کند وقتی به محل publish شده در سرور مراجعه می کنم فقط فایل aspx صفحه مورد نظر داخل فلدر user قرار دارد و فایل کد این صفحه داخل فلدر bin در root قرار می گیرد فکر می کنم که این ایراد از اینجا باشه ولی نمی دونم که چه جوری باید این مشکل را حل کنم . لطفا یکی کمکم کنه ؟
با تشکر

kiosksoft
یک شنبه 28 مهر 1387, 10:39 صبح
دوست عزیز :

اول این متغیر ببین توی سرور چه مقداری میگیره :




string str1= Context.Request.ApplicationPath + "/admin%20pages/user/deluser.aspx";



یا اینکه یه عکس از پیغام خطا بزار اینجا .

صنم
یک شنبه 28 مهر 1387, 11:01 صبح
این مقدار را می گیرد :


//admin%20pages/user/deluser.aspx




ولی وقتی این کد رو در کلاینت اجرا می کنم مقدار زیر را می گیرد :


/domainname/admin%20pages/user/deluser.aspx
تصویر خطا را هم پیوست کردم

kiosksoft
یک شنبه 28 مهر 1387, 11:28 صبح
خوب حالا اینو قرار بده ببین چی میشه :





string str1= Context.Request.ApplicationPath + "admin%20pages/user/deluser.aspx";



ضمنا یادت باشه از فاصله تو اسم گذاری کمتر استفاده کنی ...

صنم
یک شنبه 28 مهر 1387, 11:45 صبح
خیلی ممنون روی سرور درست کار کرد ولی حالا در کلاینت کار نمی کند من یک چیزی می خوام که روی هر دو کار کند . آیا راه حلی برای این کار هست یا نه ؟

kiosksoft
یک شنبه 28 مهر 1387, 11:51 صبح
ببین این چی :




string str1 = Server.MapPath("admin%20pages/user/deluser.aspx");

صنم
یک شنبه 28 مهر 1387, 12:16 عصر
نتیجه اجرا در کلاینت:(اجرا نشد)



c:\inetpub\wwwroot\eazphcpayesh\admin pages\admin%20pages\user\deluser.aspx



نتیجه اجرا در سرور:(اجرا نشد)


C:\Inetpub\wwwroot\eazphcpayesh\admin pages\admin%20pages\user\deluser.aspx

حتی admin pages اولی رو که در این مسیر دوبار آمده یکی اش رو حذف کردم ولی باز اجرا نشد

kiosksoft
یک شنبه 28 مهر 1387, 12:27 عصر
دوست عزیز
آخه حالتهای مختلفی وجود دارد .. در هر صورت همین دو راه حل وجود دارد . ضمنا به مسیرهای ایجاد شده توسط شما هم ربط دارد .

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

اصلاح کنید :




string str1 = Server.MapPath("deluser.aspx");



یه راه حل دیگه تو جاوااسکریپت هم هست که تقریبا شبیه اینهاست .

یا اینکه از این روش ادرس دهی استفاده کنید :




Response.Redirect("../default.aspx");

صنم
یک شنبه 28 مهر 1387, 13:01 عصر
با تشکر از جواب شما ولی مشکل من اینجاست هر موقع که خواستم به صفحه جدید بروم بتوانم از root وب آدرس صفحه مورد نظر را بدهم چون تعداد صفحاتم زیاد است و در داخل فلدر های مختلف بر اساس اطلاعات گروه بندی کرده ام . برای همین تاکید دارم که بتوانم از طریق root آدرس دهی کنم .

naeeme
یک شنبه 28 مهر 1387, 14:45 عصر
خوب شما اگه می‌خواید از root آدرس دهی کنین از ~ استفاده کنین.


Response.Redirect("~/admin%20pages/user/deluser.aspx", true);

صنم
دوشنبه 29 مهر 1387, 08:20 صبح
درست شد ممنون