是什么在ASP.Net?

Session.Abandon()Session.Clear()之间的差
有帮助吗?

解决方案

Session.Abandon()将结束当前会话。 Session_End将被发射以及所述下一个请求将触发事件Session_Start

Session.Clear将刚刚清除会话数据和会话将保持存活。

会话ID将保持不变在两种情况下,只要浏览器没有关闭。

<强>概括地说:

Session.Abandon();取消当前Session

Session.Clear();Session状态清除所有值。

其他提示

Session.Abandon() 

会破坏/杀死整个会话。

Session.Clear()

中移除了/清除会话数据(即从当前会话的键和值),但是该会话将活着。

相较于Session.Abandon()方法,Session.Clear()不创建新的会话,它只是使会话中的所有变量设置为NULL。

会话ID将保持在这两种情况下相同,只要浏览器没有关闭。

有些事情要在这里从我的经验说明:

Session.Abandon()并不能否定当前会话。如果重播一些旧的请求执行罚款。

但是,你打电话后,设置废弃会话的内容词典都没有永久的影响。接下来的请求获得了一个全新的会话词典和与你以前的更改它(即使你通过重放先前的请求使用相同的会话ID)(在已调用的方法)的存在。

因此,似乎完全Session.Abandon()停止整个会话的持久性,而Session.Clear()只删除其数据。

和,另外,如果你需要,以确保从重放攻击你的应用程序,你应该增加一些逻辑,用于验证会话和不依赖于任何这些内置的方法。这些似乎仅仅是用来管理会话数据的持久性,而不是为保护您的应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top