Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET会话状态超时不工作_C#_Asp.net_Session State_Session Timeout - Fatal编程技术网

C# ASP.NET会话状态超时不工作

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(); 当我进入站点并进入此页面时,标签显示会话

我希望在会话状态超时时关闭网页。这是我的web配置中的代码:

<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();