2015-01-07 19 views
0

我有一個彈出定時器,當會話還剩5分鐘時通知用戶。然後用戶可以讓它打勾並註銷,或點擊按鈕刷新會話。該按鈕觸發對web方法的ajax調用。服務器設置爲20分鐘的超時時間。一切正常,第一次通過,15分鐘過去,計時器出現,按鈕被按下,呼叫進行。但在第一個15分鐘後,我的計時器從5到30分鐘後隨機出現(它仍能正常工作)。無論出於何種原因,在ajax調用之後session.timeout都會被賦予一個隨機數。我已經調整了我的web方法以包含「session.timeout =」,如下所示:如何在ajax調用後控制會話超時

<WebMethod(EnableSession:=True)> _ 
    <Script.Services.ScriptMethod(UseHttpGet:=False)> _ 
    Public Function Check() As String 
     If HttpContext.Current.Session("strValid") Is Nothing Then 
      Return "expired" 
     Else 
      Session.Timeout = "20" 
      Return "ok" 
     End If 
    End Function  

這仍然會導致隨機彈出窗口。如果我使用會話擴展程序,然後切換到應用程序中的其他頁面,計時器將按照第一個彈出窗口的預期行爲,然後回到隨機性。

通過javaScript調用該方法,不使用window.interval。

任何想法如何確保會話計時器設置爲20分鐘,每次會話刷新?

+0

首先,更改查看Session.Timeout =「20」來查看Session.Timeout = 20 –

+0

我已經測試它的結果是一樣的@husnain_sys – rogerdeuce

回答

1

SessionState超時會在每個頁面請求中自動重置。所以,你不需要Session.Timeout = "20"行。

你需要在JavaScript中有一個客戶端計數器。一旦檢查方法變成OK,你需要休息客戶端計數器爲0

+0

你是對的,我誤以爲這是一個隨機的會話被分配,因爲我的腳本最初抓取會話時間,但在看完計時器後,我可以看到有什麼劇本 – rogerdeuce