我有一个网页,我希望输入的数据能够自动保存。为此,我使用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>
答案 0 :(得分:1)
我认为您想要的是只要用户正在处理该页面,就保持会话处于活动状态。如果不触发自动保存选项,则在没有更改时,您将不会返回服务器,因此不会更新会话。在这种情况下,当用户停止在该页面上工作时,会话将最终超时。
因此,只有在实际保存更改时才回调服务器。
答案 1 :(得分:0)
没有。 asp.net无法检测到您的用户处于非活动状态。 只要您的浏览器发出请求,服务器用户就会处于活动状态。
您必须使用javascript自行跟踪不活动状态,并在用户处于非活动状态时发布到注销网址,请说10分钟。
您可以检测用户是否处于活动状态,我的跟踪会在输入,按钮点击和鼠标活动时模糊。设置一个javascript变量以指示用户在那里。
答案 2 :(得分:0)
执行此操作的唯一方法是,在不影响会话的情况下进行自动保存,如果您使用具有EnableSessionState="false"
的页面或没有会话的处理程序执行此操作。
在这种情况下,您必须传递一些使用url编码的参数,以便处理程序(或没有会话的页面)知道将数据保存在数据库中的位置(而不是会话)
答案 3 :(得分:0)
我做了类似的事情:
Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
它并没有完全阻止会话超时,但是如果不更新客户端的cookie,它最终会忘记它正在使用哪个会话。现在,如果你没有使用表单身份验证,我想你必须删除其他一些cookie。