C# ASP.NET会话状态超时不工作
我希望在会话状态超时时关闭网页。这是我的web配置中的代码:C# ASP.NET会话状态超时不工作,c#,asp.net,session-state,session-timeout,C#,Asp.net,Session State,Session Timeout,我希望在会话状态超时时关闭网页。这是我的web配置中的代码: <system.web> <sessionState timeout="1" mode="InProc"/> </system.web> 为了检查会话超时,我在其中一个页面上放置了一个标签,这是Page_Load事件中的代码: lblSession.Text = "SESSION TIME: " + Session.Timeout.ToString(); 当我进入站点并进入此页面时,标签显示会话
<system.web>
<sessionState timeout="1" mode="InProc"/>
</system.web>
为了检查会话超时,我在其中一个页面上放置了一个标签,这是Page_Load事件中的代码:
lblSession.Text = "SESSION TIME: " + Session.Timeout.ToString();
当我进入站点并进入此页面时,标签显示会话时间:1,但1分钟后,我没有被重定向到注销页面,当前页面仍处于完全活动和工作状态,显然这意味着会话尚未终止。
我通过开发服务器在VisualStudio2008中工作,所以我看到的有关IIS设置的建议在这个阶段似乎不相关。
请帮忙 这似乎不是测试会话超时的正确方法。尝试在会话变量中添加一些内容。在接下来的几分钟内不要触摸页面,试着从会话中读回。如果会话处于活动状态,则应该能够看到变量,否则。。。你不会的
了解有关会话和疑难解答会话的详细信息 这似乎不是测试会话超时的正确方法。尝试在会话变量中添加一些内容。在接下来的几分钟内不要触摸页面,试着从会话中读回。如果会话处于活动状态,则应该能够看到变量,否则。。。你不会的
了解有关会话和疑难解答会话的详细信息
会话\u End
根据我的经验,在超时发生后的第一次回发(可以通过客户端计时器实现)时会被调用-无论何时。。。如果用户刚刚关闭浏览器,则可能永远不会调用此事件(除非您在这种情况下使用特定的JS处理程序unload
执行回发)
有关某些信息,请参阅:
会话结束
根据我的经验,在超时发生后的第一次回发(可以通过客户端计时器实现)时会被调用-无论何时。。。如果用户刚刚关闭浏览器,则可能永远不会调用此事件(除非您在这种情况下使用特定的JS处理程序unload
执行回发)
有关某些信息,请参阅:
HTTP是一种请求/响应协议。浏览器和服务器之间没有持续连接。因此,
Session\u End
中的代码实际上什么都不做——它不能告诉浏览器做什么
您需要创建一个(客户端)JavaScript计时器,并在会话超时之前主动加载注销页面。HTTP是一种请求/响应协议。浏览器和服务器之间没有持续连接。因此,
Session\u End
中的代码实际上什么都不做——它不能告诉浏览器做什么
您需要创建一个(客户端)JavaScript计时器,并在会话超时时间结束之前主动加载注销页面。代码甚至可能崩溃,因为此时响应为空。能否帮助我创建JavaScript计时器?谢谢,我用的是AJAX定时器。在page_Load中,我将会话超时值放入一个int变量中,乘以60000,以毫秒为单位获得超时,然后我将计时器的interval属性设置为timeout减去2000毫秒,以便计时器在会话超时过去之前触发一点。它触发Timer_Tick事件,在该事件中我重定向到注销页面。它工作得很好。非常感谢。代码甚至可能崩溃,因为此时响应为空。可以帮我制作一个javaScript计时器吗?谢谢,我用的是AJAX定时器。在page_Load中,我将会话超时值放入一个int变量中,乘以60000,以毫秒为单位获得超时,然后我将计时器的interval属性设置为timeout减去2000毫秒,以便计时器在会话超时过去之前触发一点。它触发Timer_Tick事件,在该事件中我重定向到注销页面。它工作得很好。非常感谢。谢谢你,我看到了你的链接,它处理会话丢失,但我的问题似乎恰恰相反,会话没有在应该结束的时候结束,页面继续像往常一样反应,按钮反应和导致回发等@DovMiller,Ondrej说得很恰当。简单地说,Session_End根本不会在“浏览器”中启动。这是一个在会话结束时将在服务器上发生的事件。由于客户端在此期间可能连接,也可能未连接,因此在此事件中无法执行Response.Redirect。因此,您不会看到浏览器自动做出反应。你有机会尝试我之前建议的会话变量方法吗?谢谢,我看到了你的链接,它处理会话丢失,但我的问题似乎恰恰相反,会话没有在应该结束时结束,页面继续像往常一样反应,按钮像往常一样反应并导致回发等@DovMiller,昂德雷说得很恰当。简单地说,Session_End根本不会在“浏览器”中启动。这是一个在会话结束时将在服务器上发生的事件。由于客户端在此期间可能连接,也可能未连接,因此在此事件中无法执行Response.Redirect。因此,您不会看到浏览器自动做出反应。您是否有机会尝试我之前建议的会话变量方法?谢谢,其中一些链接对我很有帮助。@DovMiller欢迎:-)请不要忘记将投票/标记为有帮助的已接受答案(请参阅)。谢谢。其中一些链接对我很有帮助。@DovMiller欢迎:-)请不要忘记将投票/标记为有帮助的已接受答案(请参阅)。
lblSession.Text = "SESSION TIME: " + Session.Timeout.ToString();