שלח תשובה

זירת השאלות

581
צפיות
5
תשובות

sub Session_OnEnd

,‏ 31 במאי, 2006

שלום
פעם ראשונה אני שואל כאן מקווה שאני במקום הנכון.
רציתי לדעת אם מישהו אולי מכיר את הבעיה ב_ASP והיא

ה_sub Session_OnEnd לא מגיב לי למה?
תודה מראש על כל עזרה.

תגיות:

5 תשובות

  1. זהר פלד הגיב:

    ממש אי אפשר לענות על זה…
    לא בלי קוד רלוונטי…

  2. MosheN הגיב:

    הנה הקוד
    שלום זהר
    תודה על התגובה המהירה שלך.
    <script language="vbscript" runat="server">
    Sub Application_OnStart
       Application("Total_Users") = 0
    End Sub  
    Sub Application_OnEnd
    End Sub
    Sub Session_OnStart
      Application.lock
       Application("Total_Users") = Application("Total_Users") + 1
      Application.unlock
    End Sub
    sub Session_OnEnd
      Application.lock
       Application("Total_Users") = Application("Total_Users") – 1  
      Application.unlock    
    End Sub
    </SCRIPT>
    ה_Session_OnEnd אצלי לא מגיב שיוצאים מהאתר.
    שוב תודה .
    נ.ב מקווה שהסברתי טוב את שאלתי.

  3. Dvirr הגיב:

    GLOBAL.ASA אתה צריך להכניס בתור
    אתה צריך להכניס בתור קובץ שקוראים לו GLOBAL.ASP את הקוד שרשמת למעלה.. זה הקובץ הראשון שעולה כאשר פותחים את השרת…
    אתה צריך גם לבדוק אם השרת שלך תומך בזה.

  4. MosheN הגיב:

    global.asp
    תודה על התגובה.
    1. יש לי שרת ביתי ISS.
    2. כמובן שהכנסתי כל הקוד לתוך קובץ ה_global.asp.
    3. מה שמעניין שה_ Sub Session_OnStart מגיב מצויין.
    ורק שה_Sub Session_OnEnd
    לא מגיב בכלל וזאת הבעיה כאן.

  5. זהר פלד הגיב:

    Session_onEnd קורה בסוף ה Session.
    ה Session לא מסתיים כאשר הגולש סוגר את הדפדפן.
    למעשה, השרת בכלל לא יודע מתי הדפדפן נסגר.
    המנגנון שמפעיל את ה Session עובד בצורה הבאה:

    משתמש שולח בקשה לדף asp מהשרת.
    השרת בודק האם יש למשתמש הזה עוגיה עם SessionId. אם לא, הוא שותל אחת. ברגע זה מתחיל Session עם המשתמש הזה. אם יש לו עוגיה עם SessionId, השרת יודע לאיזה Session שייך הגולש הזה לפי ה sessionId שמוחזק בעוגיה הזו.
    כמובן שהעוגיות האלו לא מחזיקות גם תאריך תפוגה, ככה שהן נמחקות ברגע שנסגר הדפדפן.
    הזמן שמוגדר ל Session להמשך הוא הזמן שהגדיר המתכנת ב Session.timeout. אם לא הוגדר Session.timeout, ברירת המחדל היא לפי הקינפוג של השרת – וברירת המחדל של iis היא 20 דקות.
    בכל בקשה של המשתמש מהשרת מתאפס המונה שסופר את הזמן שנשאר ל Session לחיות. במידה והמונה הזה מגיע ל Session.timeout, ה Session מסתיים ורק אז מתבצע הארוע ב Session_onEnd.

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

    בהצלחה!

שלח תשובה