PDA

View Full Version : خالی شدن session بعد از Response.redirect



Muhammad-Ali
جمعه 25 تیر 1389, 16:46 عصر
توی یک صفحه احتیاج دارم که یک response.redirect به صفحه ی جاری بزنم.


صفحه جاری: user.aspx
response.redirect("user.aspx")

اما درست بعد از redirect کردن متغییر session از بین میره!؟

blackcats
جمعه 25 تیر 1389, 16:53 عصر
شاید دوباره session مقدار اولیه میگیره که توی page load تعریف کردی

hlikehamed
جمعه 25 تیر 1389, 17:00 عصر
احتمالا یه جایی توی همون صفحه سشن رو پاک می کنی.
مثلا ممکنه یه جایی تو لود همون صفحه سشنی رو ایجاد کرده باشی و مقدارش رو Null کرده باشی.

Muhammad-Ali
جمعه 25 تیر 1389, 21:27 عصر
بیشتر از 10 بار چیزی حدود 300 خط رو کاراکتر به کاراکتر با استفاده از break point چک کردم و چون از Master Page هم استفاده می کنم کدهای اون قسمت رو هم خوب چک کردم. نتیجه:
وقتی بدون break point برنامه رو اجرا می کنم، به علت تهی بودن متغییر session بلافاصله به صفحه ی اصلی بر میگرده، ولی وقتی با break point اجرا میکنم متغیر session بعد از آخرین دستور هنوز مقدار معتبر داره و وقتی دستور redirect کامل شد، به صفحه ی جاری بر میگرده. حالا اگه بخوام دستوری رو اجرا کنم، اینجاست که میبینم متغییر session تهیست و برمی گرده به صفحه اصلی. ؟
توی این صفحه از چند redirect دیگه مثل بالایی استفاده می کنم و بدون مشکل اجرا می شن ولی این !؟

hlikehamed
جمعه 25 تیر 1389, 22:27 عصر
قبل از ریدایرکت چیکار می کنی؟
اگه قبل از ریدارکت از دستورات حذف برای حذف کردن یک فایل استفاده می کنی. این کار باعث از بین رفتن سشن میشه.
اگر نه که باید کدت رو دید تا بگم کجای کار ایراد داره

Muhammad-Ali
شنبه 26 تیر 1389, 05:33 صبح
اگه قبل از ریدارکت از دستورات حذف برای حذف کردن یک فایل استفاده می کنی. این کار باعث از بین رفتن سشن میشه.درست اشاره کردید مربوط به فایل هستش. کد زیر رو ببینید:


If Flag = True Then
Directory.Delete(PathDir, True)
Directory.CreateDirectory(PathDir)
If (ViewState("FName") IsNot Nothing) AndAlso (ViewState("FName").ToString() <> "") Then
Response.Redirect("User.aspx?FName=" & ViewState.Item("FName").ToString)
Else
Response.Redirect("User.aspx")
End If
End If
این کد قسمتیه که کاربر دایرکتوری جدید خودش رو جایگزین دایرکتوری موجود میکنه، Flag کد تاییدیست که از کاربر گرفته می شود برای جایگزینی. (replace کردن در صورت وجود داشتن). و Redirect واسه اینه که Grid view بازسازی بشه. راه حلی هست؟

hlikehamed
شنبه 26 تیر 1389, 14:55 عصر
راه که داره اما یکمی پیچیده میشه. من هم به این مشکل برخورده بودم. اما بعد بیخیالش شدم. پروژه ای که داشتم ارزش کار اضاف رو نداشت. اما هنوز هم دنبال یه راه حال خوب هستم. نمیدونم استفاده از cookie مشکل رو حل می کنه یا نه.
باید english جستجو کنی. یه سری کد برای این کار هست.

hlikehamed
شنبه 26 تیر 1389, 15:00 عصر
این مقاله رو بخون شاید به درد بخوره

http://dotnetslackers.com/Community/blogs/haissam/archive/2008/11/12/disable-session-expiration-when-using-directory-delete.aspx

Muhammad-Ali
شنبه 26 تیر 1389, 17:34 عصر
نمیدونم استفاده از cookie مشکل رو حل می کنه یا نه.
باید english جستجو کنی. یه سری کد برای این کار هست.
اتفاقا جستجوی هایی که کردم، توی راه حل هاشون از کوکی استفاده کرده بودن. ببینم چی میشه . . .

Muhammad-Ali
شنبه 26 تیر 1389, 19:20 عصر
با راهنمایی های hlikehamed عزیز مشکل حل شد. کد زیر رو در Application_Start کپی کنید.
کد C#‎‎ هم در منبع هستش، یا میتونید از اینجا تبدیلش کنین:http://www.developerfusion.com (http://www.developerfusion.com/)


Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)

Dim p As System.Reflection.PropertyInfo = GetType(System.Web.HttpRuntime).GetProperty("FileChangesMonitor", Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.[Public] Or Reflection.BindingFlags.[Static])

Dim o As Object = p.GetValue(Nothing, Nothing)
Dim f As System.Reflection.FieldInfo = o.[GetType]().GetField("_dirMonSubdirs", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.IgnoreCase)
Dim monitor As Object = f.GetValue(o)
Dim m As System.Reflection.MethodInfo = monitor.[GetType]().GetMethod("StopMonitoring", Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic)
m.Invoke(monitor, New Object() {})
End Sub
منبع:

http://dotnetslackers.com/Community/blogs/haissam/archive/2008/11/12/disable-session-expiration-when-using-directory-delete.aspx

moj_asghary
یک شنبه 31 مرداد 1389, 16:47 عصر
ا سلام خدمت مدیر محترم و فعال سایت و دیگر اعضا
من سایتی رو توی یک هاست آپلود کردم. برای ورود کاربر و مدیر از یک session به نام UserName اسستفاده میکنم . اما این session در یک زمان تصادفی سریع از بین میره مثلا یک دفعه بعد 10 ثانیه یک دفعه به محض تعویض صفحه و ... میخواستم کمکم کنید. باید چه کار کنم این مشکل حل بشه ؟ ممکنه چند تا ری دایرکت داشته باشم و از بین نره اما میگم نا خود آگاه بعضی و وقت ها با ریدایرکت اوب یا بعضی وقتها با ریدایرکت های دفعه چندم session از بین میره و باید دوباره لاگین کنم.
توی لوکال درست کار میکنه نمیدوونم چرا تو هاست اینطوری هست. کنترل پانل هاست هم Parralels Helm هست.
خیلی سریع کمک میخواما !

mp2009
پنج شنبه 19 خرداد 1390, 22:39 عصر
ا سلام خدمت مدیر محترم و فعال سایت و دیگر اعضا
من سایتی رو توی یک هاست آپلود کردم. برای ورود کاربر و مدیر از یک session به نام UserName اسستفاده میکنم . اما این session در یک زمان تصادفی سریع از بین میره مثلا یک دفعه بعد 10 ثانیه یک دفعه به محض تعویض صفحه و ... میخواستم کمکم کنید. باید چه کار کنم این مشکل حل بشه ؟ ممکنه چند تا ری دایرکت داشته باشم و از بین نره اما میگم نا خود آگاه بعضی و وقت ها با ریدایرکت اوب یا بعضی وقتها با ریدایرکت های دفعه چندم session از بین میره و باید دوباره لاگین کنم.
توی لوکال درست کار میکنه نمیدوونم چرا تو هاست اینطوری هست. کنترل پانل هاست هم Parralels Helm هست.
خیلی سریع کمک میخواما !

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

sobhan5968
سه شنبه 22 شهریور 1390, 11:53 صبح
ا سلام خدمت مدیر محترم و فعال سایت و دیگر اعضا
من سایتی رو توی یک هاست آپلود کردم. برای ورود کاربر و مدیر از یک session به نام UserName اسستفاده میکنم . اما این session در یک زمان تصادفی سریع از بین میره مثلا یک دفعه بعد 10 ثانیه یک دفعه به محض تعویض صفحه و ... میخواستم کمکم کنید. باید چه کار کنم این مشکل حل بشه ؟ ممکنه چند تا ری دایرکت داشته باشم و از بین نره اما میگم نا خود آگاه بعضی و وقت ها با ریدایرکت اوب یا بعضی وقتها با ریدایرکت های دفعه چندم session از بین میره و باید دوباره لاگین کنم.
توی لوکال درست کار میکنه نمیدوونم چرا تو هاست اینطوری هست. کنترل پانل هاست هم Parralels Helm هست.
خیلی سریع کمک میخواما !

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

sobhan5968
سه شنبه 22 شهریور 1390, 16:16 عصر
اتفاقا برای من هم همین مشکل وجود داره اگه دوستان لطف کنن راهنمایی کنن ممنون میشوم

تورو خدا با تجربه ها کمک کنن . خیلی واجبه

Saman Hashemi
سه شنبه 22 شهریور 1390, 16:34 عصر
قبل از اين redirect چيكار ميكنيد؟ميشه كدتونو قرار بديد؟

sobhan5968
سه شنبه 22 شهریور 1390, 17:18 عصر
قبل از اين redirect چيكار ميكنيد؟ميشه كدتونو قرار بديد؟

ببینید دوست عزیز من چه ریدایرکت بکنم چه ریدایرکت نکنم بعد از یه تایم چند ثانیه ای سشن ها خالی میشن .

مثلا من به سشن مقدار میدم به صورت
session["name"]="ali";
بعد از همون چند ثانیه کل سشن هام پاک میشن

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

البته رو لوکال هاست خوبه ولی وقتی میره رو وب اینجوری میشه

sobhan5968
سه شنبه 22 شهریور 1390, 20:57 عصر
این همه مهندس اینجاست چرا کسی جواب نمیده ؟

Saman Hashemi
چهارشنبه 23 شهریور 1390, 08:08 صبح
خوب اينكه مسلم بعد از يه مدت خالي ميشه بخاطر اينكه Session يه عمري داره به پايان برسه از بين ميره براي حل اين مشكل عمر session زياد كنيد...!
Session.Timeout = 60;

<sessionState timeout="60" />

sobhan5968
چهارشنبه 23 شهریور 1390, 11:04 صبح
خوب اينكه مسلم بعد از يه مدت خالي ميشه بخاطر اينكه Session يه عمري داره به پايان برسه از بين ميره براي حل اين مشكل عمر session زياد كنيد...!
Session.Timeout = 60;

<sessionState timeout="60" />

خوب این دستور هم گذاشتم ولی هیچ فرقی نکرد . باز بعد از چند ثانیه پاک میشن.

ایا امکان داره مشکل از هاست باشه ؟

Saman Hashemi
چهارشنبه 23 شهریور 1390, 11:18 صبح
احتمال هست با پشتيباني هاست تماس بگيريد...!