Предупреждение о таймауте сеанса, когда пользователь простаивает в asp.net
Я разрабатываю веб-приложение, используя asp.net, когда пользователь неактивен на странице в течение всего проекта. я должен получить предупреждающее сообщение во всплывающем окне, как будто ваш сеанс истекает через несколько секунд. в этом окне сообщения у меня должны быть две кнопки с именами "остаться войти" и "выйти". когда я нажимаю на кнопку "остаться войти", страница должна стать активной, а всплывающее окно должно закрыться. когда я нажимаю на кнопку "Выйти", он должен перенаправить на страницу входа в систему. Даже не нажав ни одной кнопки до окончания отсчета времени, я должен быть перенаправлен на страницу входа в систему.
Что я уже пробовал:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="cs.aspx.cs" Inherits="cms_video.cs" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.js"></script> <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.2/jquery-ui.min.js"></script> <link rel="stylesheet" href="//ajax.aspnetcdn.com/ajax/jquery.ui/1.10.2/themes/ui-lightness/jquery-ui.css" type="text/css" /> <style type="text/css"> body { font-family: Arial; font-size: 10pt; } .modalBackground { background-color: Black; filter: alpha(opacity=60); opacity: 0.6; } .modalPopup { background-color: #FFFFFF; width: 300px; border: 3px solid #0DA9D0; border-radius: 12px; padding: 0; } .modalPopup .header { background-color: #2FBDF1; height: 30px; color: White; line-height: 30px; text-align: center; font-weight: bold; border-top-left-radius: 6px; border-top-right-radius: 6px; } .modalPopup .body { padding: 10px; min-height: 50px; text-align: center; font-weight: bold; } .modalPopup .footer { padding: 6px; } .modalPopup .yes, .modalPopup .no { height: 23px; color: White; line-height: 23px; text-align: center; font-weight: bold; cursor: pointer; border-radius: 4px; } .modalPopup .yes { background-color: #2FBDF1; border: 1px solid #0DA9D0; } .modalPopup .no { background-color: #9F9F9F; border: 1px solid #5C5C5C; } </style> <script type="text/javascript"> var timoutWarning = 40000; var warningTimer; function StartTimers() { warningTimer = setTimeout("SessionExpireAlert()", timoutWarning); } function SessionExpireAlert() { var timeout = 20000; var seconds = timer / 1000; document.getElementsByName("seconds").innerHTML = seconds; setInterval(function () { seconds--; document.getElementById("seconds").innerHTML = seconds; },1000); setTimeout(function () { //Show Popup before 20 seconds of timeout. $find("mpeTimeout").show(); }, timeout - 19 * 1000); setTimeout(function () { window.location = "Default.aspx"; }, timeout); }; function ResetSession() { //Redirect to refresh Session. window.location = window.location.href; } function ResetTimers() { clearTimeout(seconds); SessionExpireAlert } </script> </head> <body > <form id="form1" runat="server" > <asp:ScriptManager ID="ScriptManager1" runat="server"> <div> <asp:LinkButton ID="lnkFake" runat="server" /> <ajaxToolkit:ModalPopupExtender ID="mpeTimeout" BehaviorID="mpeTimeout" runat="server" PopupControlID="pnlPopup" TargetControlID="lnkFake" OkControlID="btnYes" CancelControlID="btnNo" BackgroundCssClass="modalBackground" > <asp:Panel ID="pnlPopup" runat="server" CssClass="modalPopup" Style="display: none"> <div[> Session Expiring! <div class="body"> Your Session will expire in <span id="seconds"></span> seconds.<br /> Do you want to reset? </div> <div class="footer" align="right"> <asp:Button ID="btnYes" runat="server" Text="Yes" CssClass="yes" /> <asp:Button ID="btnNo" runat="server" Text="No" CssClass="no" /> </div> </div> </form> </body> </html>
vipan.net
проверьте ссылку ниже: надеюсь, это вам поможет
http://www.aspsnippets.com/Articles/Automatically-redirect-User-after-Session-Timeout-in-ASPNet.aspx
Chris Maunder
Если это ваш ответ, то опубликуйте его как ответ, а не как вопрос/комментарий
vipan.net
Конечно @Крис .
Member 12251184
мне очень жаль, Крис. в коде, который я задал, есть предупреждение о сеансе, которое запускается даже при активном пользователе. Я не хочу запускать таймер, когда пользователь активен
Member 12251184
спасибо за ваш ответ. Я использовал тот же код, который вы предложили. Проблема в том, что тайм-аут начинается даже тогда, когда пользователь активен . я не хочу получать предупреждающее сообщение, когда пользователь активен.