Session.Abandon调用后SessionID仍然相同

dra*_*fly 14 asp.net sessionid

我正在编写一些基于SessionID的日志代码...

但是,当我注销(调用Session.Abandon)并再次登录时,SessionID仍然是相同的.基本上我的PC上的每个浏览器都有自己的会话ID"附加",并且由于某种原因它不会改变:/

有什么想法发生了什么?

我的Session配置如下所示:

    <sessionState
       mode="InProc"
       timeout="1" />
Run Code Online (Sandbox Code Playgroud)

谢谢,Paweł

Sac*_*hag 14

查看本文解释session.abandon上的过程

http://support.microsoft.com/kb/899918

取自上面的链接 -

"当您放弃会话时,会话ID cookie不会从用户的浏览器中删除.因此,一旦会话被放弃,对同一应用程序的任何新请求都将使用相同的会话ID,但会有一个新的会话状态实例"

  • 是的.这是您在Logout代码中需要做的事情:Session.Abandon(); Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId","")); 在Web.config中执行以下操作:<sessionState regenerateExpiredSessionId ="true"> </ sessionState> (12认同)

Zaf*_*fer 5

这是由设计一个默认的行为表示在这里:

默认情况下,会废弃已放弃或已过期的会话的会话标识符.也就是说,如果做出包括过期或放弃会话的会话标识符的请求,则使用相同的会话标识符启动新会话.您可以通过将sessionState配置元素的regenerateExpiredSessionId属性设置为true来禁用此功能

您可以如上所述禁用此设置.

编辑:将regenerateExpiredSessionId属性设置为true仅适用于无cookie会话.要解决您的问题,您可以考虑实现继承SessionIDManager类的自定义类.您可以在这里这里获得有关的信息.