2012-06-28 14 views
1

我有一個網頁,我想輸入的數據自動保存。爲此我使用ASP.NET計時器。但我的問題是我仍然希望我的會話由於不活動而超時,所以我可以讓計時器在不刷新會話時間的情況下調用滴答聲?使用ASP.Net定時器不刷新會話

下面是代碼,抱歉,但我再也上傳圖片尚未:=

<form runat="server"> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 


<asp:Timer ID="SaveTimer" runat="server" Interval="150000" 
    ontick="SaveTimer_Tick"> 
</asp:Timer> 
<asp:UpdatePanel runat="server" updatemode="Conditional"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger controlid="SaveTimer" 
      eventname="Tick" /> 
    </Triggers> 
    <ContentTemplate> 
    </ContentTemplate> 
</asp:UpdatePanel> 
+1

會話超時深度集成到ASP.NET管道中。沒有簡單的方法來做到這一點。 – Steven

+0

所以它不可能使用定時器而不刷新會話?出於安全原因,我需要會話超時。 –

回答

1

我想你想要的只是當用戶在該頁面上工作時保持會話活動。當您不觸發自動保存選項時,如果沒有更改,則不會返回到服務器,因此不會更新會話。在這種情況下,當用戶停止在該頁面上工作時,會話將最終超時。

所以,只有在實際存在更改時纔回撥給服務器。

0

號有沒有辦法asp.net將能夠探測到你的用戶是無效的。 只要您的瀏覽器發出請求,服務器用戶就會處於活動狀態。

您將不得不使用javascript自己跟蹤閒置狀態,並在用戶閒置10分鐘後發佈到註銷網址。

您可以檢測到用戶是否處於活動狀態,我的跟蹤模糊了輸入,按鈕單擊和鼠標活動。設置一個javascript變量來表明用戶在那裏是非實際的。

0

要做到這一點的唯一方法,就是使用影響會話的自動保存功能,如果您使用的頁面爲EnableSessionState="false",或者使用帶會話的處理程序。

您必須通過從URL與編碼,這樣的處理程序(或不具有會話頁面)一些參數的情況下知道在哪裏可以將數據保存在數據庫中(而不是在會議)

0

我做了什麼通過類似這樣:

Response.Cookies.Remove(FormsAuthentication.FormsCookieName); 

它不完全阻止超時會話,但在客戶端不更新的cookie它最終會忘記它是使用哪個會話。現在,如果你不使用表單身份驗證,我想你將不得不刪除一些其他的cookie。