簡體   English   中英

ASP.NET'InProc'超時-最后執行javascript代碼

[英]ASP.NET 'InProc' timeout - execute javascript code at the end

在我的ASP.NET項目中,我正在使用“ inproc”會話狀態進行會話管理,當前有效期限設置為-

      <sessionState mode="InProc" timeout="1" ></sessionState>

即會話超時為1分鍾。

在“空閑” 1分鍾結束時,應用程序被重定向到會話過期的視圖或頁面。

在進行此重定向之前,我想在同一控制器上下文中執行一些javascript代碼。 這里的另一點是,除了框架的內置機制之外,還從其他地方調用了會話到期代碼。

我試過創建一個JavaScript'poll'函數來檢查會話超時,然后在會話失效時執行一些操作,但是這樣做是在每次進行xhr調用時依次重新驗證該會話。

基本思想是通過某種機制將會話超時通知給javascript代碼。 該代碼庫是一個現有的庫,對於像我這樣的新.NET開發人員來說,該庫很大。

任何幫助表示贊賞。

我使用以下方法在20分鍾的會話超時前2分鍾警告用戶,以便他們可以保存工作並在2分鍾內繼續操作,否則他們的更改將丟失

<script type = "text/javascript">
var sessionTimeoutWarning = 18;
var sessionTimeout = '<%= Session.Timeout %>';
var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
setTimeout('SessionWarning()', sTimeout);

function SessionWarning() {
  var message = "Your current session will expire in " + (parseInt(sessionTimeout) - parseInt(sessionTimeoutWarning)) + " mins!\nPlease Save any unsaved changes before the session expires";
  var userid = '<%= Session("User_ID") %>';
  if (userid == '') {} else {
    if (parseInt(userid) > 0) {
      alert(message);
    }
  }
} 
</script>

它是一個ASP.NET Web窗體應用程序,上面的腳本塊已插入到母版頁上,並且在所有子頁中都可用。

Session("User_ID")是變量后面的代碼,該變量存儲當前登錄的用戶ID,該ID必須為正非零整數。 邏輯是,如果為空,零或非正,則不顯示該消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM