• Session Timeout troubleshout -- בעיית תקשורת

    תקלה :

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


    הסבר התקלה :

    לאחר זמן קצר נופלת האפליקציה עם הודעה זו .

    הנפילה קוראת בגלל איבוד SESSION של פרמטרים הנבדקים בדף בזמן העלאה .

    פתרונות אפשריים :

    לבדוק זמן SESSIONTIMEOUT במקומות הבאים :

    -- ב IIS נכנס ל APPLICATION POOL ל PROPERTIES לטאב של PERFORMANCE

    לשים לב להגדרת IDLE TIMEOUT . אמור להיות 20 דקות .(במקרה שהוא נמוך כל האפליקציות תחת אותו POOL יאבדו SESSION לפי הגדרתו)

    -- ב IIS נכנסים ל DEFAULT WEB SITE לפרויקט שלך , ל VIRTUAL DIRECTORY שלו ל PROPERTIES לטאב ASP.NET ל EDIT CONFIGURATION לטאב STATE MANAGEMENT ולשים לב ש SESSION TIMEOUT יוגדר ל 20 דקות . (במקרה שב WEB.CONFIG של הפרויקט יוגדר זמן יותר ארוך עדיין ילך לפי ההגדרה הגלובלית )


    יש לשים לב שההגדרות יכולות להיות שונות פר כל VIRTUAL DIRECTORY ב IIS.

    ב WEB.CONFIG של הפרויקט –

    הגדרת sessionState

    מאפשר להגדיר אורך חיים של SESSION באפליקציה

    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="4000" />

    לפי הניסיון שלנו לקח את ההגדרה של IIS לפי ה VIRTUAL DIRECTORY של הפרויקט (20 דקות , למרות שמוגדר 4000, יכול להיות מקסימום אפשרי שמעליו מתעלמים מהפרמטר בקובץ קונפיגורציה. )

    הגדרת outputCacheProfiles

    מאפשר להגדיר פרמטרים גלובליים לכל האפליקציה של outputcache

    <%@ outputcache duration="12000" VaryByParam="*" %>

    מגדירים בקונפיגורציה -

    <caching>

    <outputCacheSettings>

    <outputCacheProfiles>

    <add name="DurationProfileGeneral" duration="1200" varyByParam="*" />

    outputCacheProfiles>

    outputCacheSettings>

    caching>

    משתמשים בדף –

    <%@ outputcache CacheProfile="DurationProfileGeneral" %>

    בעיה שנוצרה -

    בכל דף WEB י של המערכת יש פניה לבדיקת SESSION ב PAGE_ONLOAD אשר בודקת הימצאותם של כניסות של פרמטרים ב SESSION .

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    If fCheckSessionTimeOut() Then Exit Sub

    End Sub

    במקרה של DURATION=1200 האפליקציה נכנסת לדף בפעם הראשונה ובודקת את המצאות ה SESSION , מוצאת אותו תקין ומכניסה את הדף ל CACHING ל 20 דקות , לפי החשבון של 1200שניות \ 60 שניות = 20 דקות .

    ניתן לראות את ה EXPIRATION של הדף ע"י כניסה ל TOOLS ל INTERNET OPTIONS בטאב GENERAL ב BROWSING HISTORY נכנסים ל SETTINGS ל VIEW FILES ושם נמצאים הקבצים השמורים .


    הסבר : במשך 20 דקות הבאות , לפי הגדרת DURATION במקרה של הפעלת הדף ע"י REFRESH לא יתבצע חידוש הדף אלא הוא יובא מה TEMPORARY FILES של INTERNET .

    במשך 20 דקות הוא לא יבצע PAGE_ONLOAD ולא יבדוק נוכחות של פרמטרים ב SESSION .

    לאחר 20 דקות תתבצע העלאה מחודשת של הדף ויבדקו הנתונים .

0 comments:

Leave a Reply

Thanks for sharing your feedback! If your feedback doesn't appear right away, please be patient as it may take a few minutes to publish - or longer if the blogger is moderating comments.