有什麼方法可以知道在超時發生之前會話對象剩餘了多長時間?獲取時間留在會話中,直到超時
我知道如何從webconfig獲取實際的超時時間,但有什麼方法可以知道會話最後一次活動的時間嗎?
我的用戶將在我的應用程序中填寫大型表單,如果在他們點擊「提交」之前超過10分鐘,他們將被註銷。如果會議即將超時,我想警告他們。我將使用ajax調用進行檢查。
有什麼方法可以知道在超時發生之前會話對象剩餘了多長時間?獲取時間留在會話中,直到超時
我知道如何從webconfig獲取實際的超時時間,但有什麼方法可以知道會話最後一次活動的時間嗎?
我的用戶將在我的應用程序中填寫大型表單,如果在他們點擊「提交」之前超過10分鐘,他們將被註銷。如果會議即將超時,我想警告他們。我將使用ajax調用進行檢查。
您可以在一個javascript變量中跟蹤服務器時間DateTime.Now
。
用JavaScript比較當前時間。
如果差異達到閾值限制,您可以在javascript中顯示警告消息。
更好的是,您可以觸發ajax調用您的服務器,這將延長您的服務器超時。
只是想建議一樣的。檢查http://forums.asp.net/t/1207721.aspx/2/10 – StringBuilder 2013-05-08 09:24:25
假設每次對服務器進行的調用(同步或異步)都會「重置」超時值是否安全? – Johan 2013-05-08 10:03:34
是的。用戶對服務器的任何請求將重置超時 – nunespascal 2013-05-08 10:31:33
您還可以通過後面的代碼將Session超時設置爲JavaScript超時。讓它運行你想要的任何JavaScript函數。非常靈活,你不需要用檢查當前時間渣土約...等
事情是這樣的:
"window.setTimeout('yourJSFunctionGoesHere()', " + Session.Timeout + ");";
如果你想提醒前2分你可能確實是這樣的:
"window.setTimeout('yourWarningJSFunctionGoesHere()', " + Session.Timeout-2 + ");";
這看起來不錯。除了我更喜歡傳遞一個自治函數到'setTimeout()';) – Johan 2013-05-08 10:05:14
謝謝我需要代表:-) – TheKingDave 2013-05-08 11:21:29
http://weknowgifs.com/wp-content/uploads/2013/03/christian-bale-upvote -gif.gif – Johan 2013-05-08 19:26:21
我們可以通過定義在web.config中的會話時間&預警時間,並使用定時器來確認頁面上的經過時間處理這個問題。
的Web.Config:
<appSettings>
<add key="SessionWarning" value="30" />
</appSettings>
<system.web>
<sessionState timeout="45"/>
</system.web>
客戶端頁面:
<script language="javascript" type="text/javascript">
/* Page Time Out Warning Message Script */
var sessionTimeoutWarning = '<%=System.Configuration.ConfigurationSettings.AppSettings["SessionWarning"].ToString()%>';
var sessionTimeout = "<%= Session.Timeout %>";
var sTimeout = parseInt(sessionTimeoutWarning) * 60 * 1000;
var timeOnPageLoad = new Date();
setTimeout('SessionWarning()', sTimeout);
//To redirect to the home page
setTimeout('RedirectToWelcomePage()', parseInt(sessionTimeout) * 60 * 1000);
//Session Warning
function SessionWarning() {
//minutes left for expiry
var minutesForExpiry = (parseInt(sessionTimeout) -
parseInt(sessionTimeoutWarning));
var message = "Your session will expire in another " + minutesForExpiry +
" mins! Please Save the data before the session expires";
alert(message);
var currentTime = new Date();
//time for expiry
var timeForExpiry = timeOnPageLoad.setMinutes(timeOnPageLoad.getMinutes()
+ parseInt(sessionTimeout));
//Current time is greater than the expiry time
if (Date.parse(currentTime) > timeForExpiry) {
alert("Session expired. You will be redirected to home page");
window.location = "../Home.aspx";
}
}
//Session timeout add home page where you want to redirect after session timeout
function RedirectToWelcomePage() {
alert("Session expired. You will be redirected to home page");
window.location = "../Home.aspx";
}
/* End */
</script>
這可能是對你有用的:http://programmerramblings.blogspot.nl/2009/08/aspnet- session-timeout-control-jquery.html – 2013-05-08 09:21:36