PDA

View Full Version : سوال: session و مشکلات تایم



صادق صدقی
چهارشنبه 03 آذر 1389, 22:59 عصر
سلام
دوستان من لاگین رو با سشن درست کردم
اما زود از بین میره

چطوری می تونم زمان پایداری session رو بیشتر کنم؟

mahdi87_gh
چهارشنبه 03 آذر 1389, 23:23 عصر
در فایل web.config قسمتی به نام SessionState وجود داره یا اگه نبود در system.web ایجاد کن

<system.web>
<sessionState timeout="30" mode="InProc"></sessionState>

leila_mahyanet
چهارشنبه 03 آذر 1389, 23:27 عصر
این مشکل منم هست . ممنون میشم اگه دوستان راه حلی دارن بگن.

صادق صدقی
چهارشنبه 03 آذر 1389, 23:50 عصر
در فایل web.config قسمتی به نام SessionState وجود داره یا اگه نبود در system.web ایجاد کن

<system.web>
<sessionState timeout="30" mode="InProc"></sessionState>


این 30 چیه؟
دقیقه اس؟

mahdi87_gh
چهارشنبه 03 آذر 1389, 23:51 عصر
بله
به دقیقه هست

صادق صدقی
پنج شنبه 04 آذر 1389, 01:07 صبح
بله
به دقیقه هست


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

blackcats
پنج شنبه 04 آذر 1389, 12:12 عصر
من هم این مشکل رو داشتم بر میگرده به مشکلات هاست با فرض این که تایم رو در وب کانفیگ انجام داده باشی.
من تماس گرفتم ب یه تغییر سرور مشکلم بر طرف شد.

tazarvmmr
پنج شنبه 04 آذر 1389, 12:13 عصر
من خیلی مطمعن نیستم ولی فکر میکنم یک تنظیماتی برای زمان session در server هم باشه، تو iis میتونی زمان session وب سایتو تعیین کنی.

aserfg
پنج شنبه 04 آذر 1389, 12:33 عصر
سلام
مشکلم هنوز حل نشد
بهتر شد اما اون دقیقه ای که دادم جواب نداد
زدم 60 دقیقه اما بازم session از بین رفته بود

دوست عزیز اولا که سشنها در رم هاست قرار می گیرند و ناپایدار هستند و اگه هاست شما معتبر نباشه برای استفاده و اشغال رم و سایر منابع سیستم هاست محدودیتهای زیادی قائل می شن از طرفی پیاده سازی اعتبار سنجی و مدیریت کاربران تنها بر پایه سشن از لحاظ امنیتی کاری اشتباهه .
دسترسی به اطلاعات سشن ها برای هندلرها به صورت پیش فرض ممکن نیست ولی شما خودتون هم می تونید با پیاده سازی اینترفیس IRequiresSessionState نه تنها محتویات رو بخونید بلکه اونا رو تغییر بدین .

blackcats
پنج شنبه 04 آذر 1389, 12:43 عصر
اگر
<sessionState timeout="30" mode="InProc"></sessionState>ست کرده باشی توی وب کانفیگ و هنوز مشکل داری من فکر می کنم مشکل از هاستینگ باید باشه

صادق صدقی
پنج شنبه 04 آذر 1389, 16:37 عصر
دوست عزیز اولا که سشنها در رم هاست قرار می گیرند و ناپایدار هستند و اگه هاست شما معتبر نباشه برای استفاده و اشغال رم و سایر منابع سیستم هاست محدودیتهای زیادی قائل می شن از طرفی پیاده سازی اعتبار سنجی و مدیریت کاربران تنها بر پایه سشن از لحاظ امنیتی کاری اشتباهه .
دسترسی به اطلاعات سشن ها برای هندلرها به صورت پیش فرض ممکن نیست ولی شما خودتون هم می تونید با پیاده سازی اینترفیس IRequiresSessionState نه تنها محتویات رو بخونید بلکه اونا رو تغییر بدین .


میشه کمی توضیح بدین دربارش؟
یا نمونه ای مرجعی چیزی
متشکر می شم
آخه مشکله خیلی از بچه ها یه

aserfg
پنج شنبه 04 آذر 1389, 22:14 عصر
اگه منظورتون بدست آورن اطلاعات سشن هاست باید با HTTPHANDLER آشنایی داشته باشین
اگه دسترسی خواندنی و نوشتنی به اطلاعات سشن می خواین اینترفیس IRequiresSessionState و اگر فقط خواندنی IReadOnlySessionState رو باید پیاده سازی کنین . IHttpHandler هم که اینترفیس اصلی است .


public class NewHandler : IHttpHandler, IRequiresSessionState
اما با توجه به اینکه سئوال شما و مشکل شما در عدم پایداری سشن ها است و در ضمن توضیح این موضوع زیاد ارتباطی به مشکل شما نداره . و اون چیزی که مهمه اینکه شما مدیریت کاربران خودتون رو بر پایه اطلاعات ناپایدار گذاشتین . (جدا از بحث امنیت). ببینید بعضی سایتها مثل همین سایت برنامه نویس بر پایه کو کی ها اعضا رو مدیریت می کنن . درسته امنیت زیاد نیست ولی در سایتهایی مثل اینجا نیازی هم به این مقوله نیست . در زبانهایی مثل پی اچ پی که زبانی مختص سایت هست و نه اپلیکیشن های مبتنی بر وب که امنیت بالایی رو می طلبن . معمولا روتینه که از کوکی ها استفاده می کنن . شما خودتون توی همین سایت وقتی با هر بار باز کردن این سایت به راحتی شناسایی می شین چقدر براتون لذتبخشه .
ولی ممبر شیپ ASP.NET جدا از این مقوله های ابتدایی مانند سشن و کوکی به نوعی یکپارچگی با وب سرورها (مانند IIS) ایجاد می کنه . لذا وقتی شما همچین گنجی رو که به راحتی برای شما امنیت و متدهایی برای مدیریت کاربران به همراه داره چرا اصرار به پیاده سازی این مهم می کنید .
حالا در مورد ست کردن session timeout می دم شما برای این کار سه روش رو می تونید دنبال کنید:
1-از طریق web config :

<sessionState mode="InProc" timeout="15" cookieless="false" />
2- در رویداد Session_Start در فایل global.asax

Session.TimeOut=15;3-استفاده از تنظیمات iis
شما روش دوم رو هم امتحان کن
توضیحات تکمیل رو می تونی توی msdn پیدا کنی :
http://support.microsoft.com/kb/910553
ضمنا روش هایی نیز برای جلوگیری از از بین رفتن اطلاعات سشن وجود داره :
http://www.codeproject.com/KB/session/Reconnect.aspx

دوست گرامی پیشنهاد من برای رفع مشکل شما : cookieless رو به true ست کن . علتش ناپایداری احتمالی کوکی هاست (زمان انقضاشون سریعتر ار session ها باشه چون سشن ها در حالت طبیعی ( cookieless="false") به کو کی ها وابسته هستند ) اگه مشکلت حل نشد دو mode دیگه ای که آقای Rob Howard در مقالشون در msdn آدرسی که در بالا گفتم آوردن با همون شکل گفته شده رو هم امتحان کنید .

موفق باشید .