שאלת SESSION

eMaster

New member
שאלת SESSION

שלום. כמה עובדות שאני חושב שאני יודע על SESSION: מתחיל אוטומטית עם התחלת האפליקציה (כלומר, כניסה לאתר). אמור להשאר תקף כל עוד גולשים באתר (?) ובכל זאת, יוצא שSESSION נגמר לי תוך כדי עבודה... במי זה תלוי? בשרת? באפליקציה? איך עושים RESET לזמן של הSESSION ניסיתי לעשות Sesstion.Timeout = XX בכל עליה של דף, כנראה שזה לא זה :)
 

א ו ר ח ת

New member
הברירת מחדל שלו זה

20 דקות אם אני לא טועה בכל אופן
Sesstion.Timeout=60​
יעשה אותו שעה. אין לי מושג מה זה XX בהצלחה!
 

זהר פלד

New member
עד כמה שאני יודע, זה לא מדוייק...

Seesion מסתים או בסוף דף ASP שכתובה בו הפקודה Session.Abandon, או ברגע שנגמר לו ה Session.timeout - שאכן, ברירת המחדל שלו היא 20 דקות. מרגע ביצוע הבקשה האחרונה לדף ASP, השרת מתחיל לספור את הזמן שהוגדר לו ב Session.timeout. אם השרת מגיע לסוף הספירה, ה Session מת.
 

Salem

New member
ומה יקרה אם תסגור את הדפדפן../images/Emo35.gif

אחרי 5 דקות ותפתח שוב
הסשיין ימחק...
 

זהר פלד

New member
עשיתי ניסוי כזה פעם...

נראה לי שזה היה עוד בתקופת יואל (ז"ל)... בכל אופן, אם אני זוכר נכון, אז התוצאה היתה שה Session_onEnd מופעל רק 20 דקות אחרי שנסגר הדפדפן.(כמובן, זו היתה הגדרת ה timeout שלו בשרת). כשניסיתי לפתוח חלון דפדפן חדש, קיבלתי Session חדש, מה שאומר שה Session מנוהל מול הדפדפן ולא מול המחשב...
 

אוריקס

New member
אני לא חושב שאתה צודק ../images/Emo13.gif

לדעתי הSession_onEnd מופעל רק כמה דקות לאחר הבקשה האחרונה.
 

אוריקס

New member
כן -

אבל מה שאני בעצם אומר זה שהוא מתחיל לספור מרגע הבקשה האחרונה ולא מרגע היציאה מהדפדפן, תקני אותי אם אני טועה. ובכמה דקות הכוונה לערך התפוגה שנקבע או לא נקבע...
 

זהר פלד

New member
אתה לא טועה...

אני פשוט לא ניסחתי נכון את ההודעה שהגבת לה. אבל אם תקרא את ההודעה הראשונה שלי בשרשור הזה, תגלה שזה בדיוק מה שאמרתי...
 
הוא לא נמחק.

הוא עדיין קיים על השרת, אבל לגולש אין גישה אליו כי ברגע שהוא פותח חלון חדש של הדפדפן הוא פותח גם סשן חדש.
 

redhead225

New member
וזה למה?

מאוד פשוט: SESSIONS ב IIS מתנהלים ע"י COOKIES מהצורה ASPSESSIONIDXXX=YYYY כאשר XXX היא קומבינציה של בתים כש IIS עולה ו YYY זה ה COOKIE שמורכב בין היתר מ sessionID. עמ"נ לשמור sessions, הקליינט צריך לשלוח בכל request את ה cookie ש IIS שלח לו בהתחלה לטובת ניהול ה session. אם browser חדש לא שולח את ה cookie הנ"ל (ניתן לראות עם סניפר), אזי מתחיל session חדש.
 

redhead225

New member
אכן לא מבחינת השרת

אשר עבורו יש עדיין משתנים ואובייקטים שחיים ב scope של session וצורכים לו זיכרון ומשאבים.
 

אוריקס

New member
סשן מתחיל כשאתה מתחיל אותו

כדי להעלות סשן מסויים עם תחילת האפליקציה השתמשת בגלובל אסא.
 

eMaster

New member
עדיין לא קיבלתי תשובה

ראשית XX, בד"כ זה ביטוי למשתנה... שפשוט לא עקרוני מה יש שם. שנית, הבנתי שהזמן נספר מהבקשה האחרונה, האם REFRESH לדף עושה את העבודה? וגם אם כן/לא, איך אני עושה איפוס למונה הזמן הזה?
 

אוריקס

New member
המנה

Refresh אכן עושה את העבודה. אתה יכול לקבוע תפוגה מותאמת אישית של סשן ע"י הגדרת התכונה TimeOut:
Session.TimeOut = 60​
 
למעלה