Session 为什么会话放弃不起作用?

Session 为什么会话放弃不起作用?,session,asp-classic,iis-6,Session,Asp Classic,Iis 6,我有以下代码 cx5_login.asp 会话(“登录”)=“演示” cx5_logout.asp: 会话(“登录”)=“” 会话。放弃 response.redirect“c5x_login.asp?C5xName=login” 我想知道会话。放弃是否会删除会话(“登录”)? 目前,我正在检查会话(“登录”)以确定用户是否登录。 但它不起作用 情景: 用户登录 用户注销 我从会话(“登录”)打印值,它仍然有值 我已经调用了Session.放弃,但是为什么Session(“Login”)仍然

我有以下代码

cx5_login.asp

会话(“登录”)=“演示”
cx5_logout.asp:

会话(“登录”)=“”
会话。放弃
response.redirect“c5x_login.asp?C5xName=login”
我想知道
会话。放弃
是否会删除
会话(“登录”)
? 目前,我正在检查
会话(“登录”)
以确定用户是否登录。 但它不起作用

情景:

  • 用户登录
  • 用户注销
  • 我从
    会话(“登录”)
    打印值,它仍然有值
  • 我已经调用了Session.放弃,但是为什么
    Session(“Login”)
    仍然有价值呢? 它是否与
    ASPSESSIONID
    cookie相关? 我尝试手动删除该cookie,结果成功了

    对此有何解释?

    什么没有错,但它也不对,问题是,而且经常是提问者或回答将经典ASP与ASP.Net混淆的问题的人

    如果你的问题是经典ASP相关的,那么当谈到对象时,你需要考虑以下内容:

    应使用
    Session.advand()
    完全处置会话,包括
    Session.SessionID

    但是有一个卡弗特

    引自

    调用放弃方法时,当前会话对象排队等待删除,但直到当前页面上的所有脚本命令都已处理完毕,才会被实际删除。这意味着您可以访问存储在会话对象中的变量,该变量与对放弃方法的调用位于同一页面上,但不能访问任何后续网页中的变量

    这意味着在当前页面的上下文中,会话仍然可用,直到移动到另一个页面,
    Session
    对象才被实际释放

    如果您在注销页面后不重定向,您的会话仍然可以访问,但请确保在离开该页面后尝试访问该会话将失败

    作为一个测试,注销后不会自动重定向,但会给用户一个链接,让他们按下,看看你是否有同样的行为


    但是我在
    session.discard()
    之后仍然得到了session值,并重定向到另一个页面。为什么?@IswantoSan如果您手动更改另一个页面而不是重定向,会发生什么情况?您仍然看到会话吗?@IswantoSan在所有浏览器中的行为都是相同的吗?是的,相同,我正在使用mozilla和IE。我尝试登录、注销、关闭浏览器,然后直接键入主页(用户必须首先登录),我仍然可以读取会话值。仅供参考,我正在使用IIS 6